1(()=>{var T=Object.create;var U=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var l=(g,n)=>U(g,"name",{value:n,configurable:!0});var Z=(g,n)=>()=>(n||g((n={exports:{}}).exports,n),n.exports);var f=(g,n,t,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let I of k(n))!D.call(g,I)&&I!==t&&U(g,I,{get:()=>n[I],enumerable:!(e=H(n,I))||e.enumerable});return g};var c=(g,n,t)=>(t=g!=null?T(O(g)):{},f(n||!g||!g.__esModule?U(t,"default",{value:g,enumerable:!0}):t,g));var Q=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.shoppingCartTop=n():g.shoppingCartTop=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"c");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})},n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=209)}([function(module,exports){eval(`// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 2var global = module.exports = typeof window != 'undefined' && window.Math == Math 3 ? window : typeof self != 'undefined' && self.Math == Math ? self 4 // eslint-disable-next-line no-new-func 5 : Function('return this')(); 6if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef 7 8//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ== 9//# sourceURL=webpack-internal:///0 10`)},function(module,exports,__webpack_require__){eval(`var store = __webpack_require__(23)('wks'); 11var uid = __webpack_require__(24); 12var Symbol = __webpack_require__(0).Symbol; 13var USE_SYMBOL = typeof Symbol == 'function'; 14 15var $exports = module.exports = function (name) { 16 return store[name] || (store[name] = 17 USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); 18}; 19 20$exports.store = store; 21 22//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxFQUFXO0FBQy9CLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 23//# sourceURL=webpack-internal:///1 24`)},function(module,exports){eval(`var core = module.exports = { version: '2.6.11' }; 25if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef 26 27//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsdUNBQXVDIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 28//# sourceURL=webpack-internal:///2 29`)},function(module,exports,__webpack_require__){eval(`// Thank's IE8 for his funny defineProperty 30module.exports = !__webpack_require__(11)(function () { 31 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; 32}); 33 34//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxFQUFVO0FBQ3BDLGlDQUFpQyxRQUFRLG1CQUFtQixVQUFVLEVBQUUsRUFBRTtBQUM
vendor: 9,082 bytes, lines 34-130
34xRSxDQUFDIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 35//# sourceURL=webpack-internal:///3 36`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5); 37var IE8_DOM_DEFINE = __webpack_require__(26); 38var toPrimitive = __webpack_require__(27); 39var dP = Object.defineProperty; 40 41exports.f = __webpack_require__(3) ? Object.defineProperty : function defineProperty(O, P, Attributes) { 42 anObject(O); 43 P = toPrimitive(P, true); 44 anObject(Attributes); 45 if (IE8_DOM_DEFINE) try { 46 return dP(O, P, Attributes); 47 } catch (e) { /* empty */ } 48 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); 49 if ('value' in Attributes) O[P] = Attributes.value; 50 return O; 51}; 52 53//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLEVBQWlCO0FBQzNDOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxDQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxZQUFZO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 54//# sourceURL=webpack-internal:///4 55`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7); 56module.exports = function (it) { 57 if (!isObject(it)) throw TypeError(it + ' is not an object!'); 58 return it; 59}; 60 61//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 62//# sourceURL=webpack-internal:///5 63`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4); 64var createDesc = __webpack_require__(12); 65module.exports = __webpack_require__(3) ? function (object, key, value) { 66 return dP.f(object, key, createDesc(1, value)); 67} : function (object, key, value) { 68 object[key] = value; 69 return object; 70}; 71 72//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyxFQUFrQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFnQjtBQUN6QztBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 73//# sourceURL=webpack-internal:///6 74`)},function(module,exports){eval(`module.exports = function (it) { 75 return typeof it === 'object' ? it !== null : typeof it === 'function'; 76}; 77 78//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 79//# sourceURL=webpack-internal:///7 80`)},function(module,exports){eval(`var hasOwnProperty = {}.hasOwnProperty; 81module.exports = function (it, key) { 82 return hasOwnProperty.call(it, key); 83}; 84 85//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EiLCJmaWxlIjoiOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 86//# sourceURL=webpack-internal:///8 87`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0); 88var core = __webpack_require__(2); 89var ctx = __webpack_require__(13); 90var hide = __webpack_require__(6); 91var has = __webpack_require__(8); 92var PROTOTYPE = 'prototype'; 93 94var $export = function (type, name, source) { 95 var IS_FORCED = type & $export.F; 96 var IS_GLOBAL = type & $export.G; 97 var IS_STATIC = type & $export.S; 98 var IS_PROTO = type & $export.P; 99 var IS_BIND = type & $export.B; 100 var IS_WRAP = type & $export.W; 101 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); 102 var expProto = exports[PROTOTYPE]; 103 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; 104 var key, own, out; 105 if (IS_GLOBAL) source = name; 106 for (key in source) { 107 // contains in native 108 own = !IS_FORCED && target && target[key] !== undefined; 109 if (own && has(exports, key)) continue; 110 // export native or passed 111 out = own ? target[key] : source[key]; 112 // prevent global pollution for namespaces 113 exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] 114 // bind timers to global for call from export context 115 : IS_BIND && own ? ctx(out, global) 116 // wrap global constructors for prevent change them in library 117 : IS_WRAP && target[key] == out ? (function (C) { 118 var F = function (a, b, c) { 119 if (this instanceof C) { 120 switch (arguments.length) { 121 case 0: return new C(); 122 case 1: return new C(a); 123 case 2: return new C(a, b); 124 } return new C(a, b, c); 125 } return C.apply(this, arguments); 126 }; 127 F[PROTOTYPE] = C[PROTOTYPE]; 128 return F; 129 // make static versions for prototype methods 130 }
130)(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; 131 // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% 132 if (IS_PROTO) { 133 (exports.virtual || (exports.virtual = {}))[key] = out; 134 // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% 135 if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); 136 } 137 } 138}; 139// type bitmap 140$export.F = 1; // forced 141$export.G = 2; // global 142$export.S = 4; // static 143$export.P = 8; // proto 144$export.B = 16; // bind 145$export.W = 32; // wrap 146$export.U = 64; // safe 147$export.R = 128; // real proto method for \`library\` 148module.exports = $export; 149 150//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQiIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
150UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2Y
150XIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 151//# sourceURL=webpack-internal:///9 152`)},function(module,exports){eval(`module.exports = {}; 153 154//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 155//# sourceURL=webpack-internal:///10 156`)},function(module,exports){eval(`module.exports = function (exec) { 157 try { 158 return !!exec(); 159 } catch (e) { 160 return true; 161 } 162}; 163 164//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ== 165//# sourceURL=webpack-internal:///11 166`)},function(module,exports){eval(`module.exports = function (bitmap, value) { 167 return { 168 enumerable: !(bitmap & 1), 169 configurable: !(bitmap & 2), 170 writable: !(bitmap & 4), 171 value: value 172 }; 173}; 174 175//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 176//# sourceURL=webpack-internal:///12 177`)},function(module,exports,__webpack_require__){eval(`// optional / simple c
177ontext binding 178var aFunction = __webpack_require__(19); 179module.exports = function (fn, that, length) { 180 aFunction(fn); 181 if (that === undefined) return fn; 182 switch (length) { 183 case 1: return function (a) { 184 return fn.call(that, a); 185 }; 186 case 2: return function (a, b) { 187 return fn.call(that, a, b); 188 }; 189 case 3: return function (a, b, c) { 190 return fn.call(that, a, b, c); 191 }; 192 } 193 return function (/* ...args */) { 194 return fn.apply(that, arguments); 195 }; 196}; 197 198//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 199//# sourceURL=webpack-internal:///13 200`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7); 201var document = __webpack_require__(0).document; 202// typeof document.createElement is 'object' in old IE 203var is = isObject(document) && isObject(document.createElement); 204module.exports = function (it) { 205 return is ? document.createElement(it) : {}; 206}; 207 208//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ== 209//# sourceURL=webpack-internal:///14 210`)},function(module,exports){eval(`// 7.2.1 RequireObjectCoercible(argument) 211module.exports = function (it) { 212 if (it == undefined) throw TypeError("Can't call method on " + it); 213 return it; 214}; 215 216//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 217//# sourceURL=webpack-internal:///15 218`)},function(module,exports){eval(`// 7.1.4 ToInteger
219var ceil = Math.ceil; 220var floor = Math.floor; 221module.exports = function (it) { 222 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); 223}; 224 225//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 226//# sourceURL=webpack-internal:///16 227`)},function(module,exports,__webpack_require__){eval(`var shared = __webpack_require__(23)('keys'); 228var uid = __webpack_require__(24); 229module.exports = function (key) {
230 return shared[key] || (shared[key] = uid(key)); 231}; 232 233//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsRUFBVztBQUNoQyxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 234//# sourceURL=webpack-internal:///17 235`)},function(module,exports,__webpack_require__){eval(`// to indexed object, toObject with fallback for non-array-like ES3 strings 236var IObject = __webpack_require__(35); 237var defined = __webpack_require__(15); 238module.exports = function (it) { 239 return IObject(defined(it)); 240}; 241 242//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDO0FBQ0E7QUFDQSIsImZpbGUiOiIxO
242C5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 243//# sourceURL=webpack-internal:///18 244`)},function(module,exports){eval(`module.exports = function (it) { 245 if (typeof it != 'function') throw TypeError(it + ' is not a function!'); 246 return it; 247}; 248 249//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 250//# sourceURL=webpack-internal:///19 251`)},function(module,exports){eval(`var toString = {}.toString; 252 253module.exports = function (it) { 254 return toString.call(it).slice(8, -1); 255}; 256 257//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 258//# sourceURL=webpack-internal:///20 259`)},function(module,exports){eval(`module.exports = true; 260 261//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 262//# sourceURL=webpack-internal:///21 263`)},function(module,exports,__webpack_require__){eval(`var def = __webpack_require__(4).f; 264var has = __webpack_require__(8); 265var TAG = __webpack_require__(1)('toStringTag'); 266 267module.exports = function (it, tag, stat) { 268 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); 269}; 270 271//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQWM7QUFDaEMsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsVUFBVSxtQkFBTyxDQUFDLENBQVE7O0FBRTFCO0FBQ0Esb0VBQW9FLGlDQUFpQztBQUNyRyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 6,621 bytes, lines 271-322
271IDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 272//# sourceURL=webpack-internal:///22 273`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2); 274var global = __webpack_require__(0); 275var SHARED = '__core-js_shared__'; 276var store = global[SHARED] || (global[SHARED] = {}); 277 278(module.exports = function (key, value) { 279 return store[key] || (store[key] = value !== undefined ? value : {}); 280})('versions', []).push({ 281 version: core.version, 282 mode: __webpack_require__(21) ? 'pure' : 'global', 283 copyright: '\xA9 2019 Denis Pushkarev (zloirock.ru)' 284}); 285 286//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLG1CQUFPLENBQUMsRUFBWTtBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 287//# sourceURL=webpack-internal:///23 288`)},function(module,exports){eval(`var id = 0; 289var px = Math.random(); 290module.exports = function (key) { 291 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); 292}; 293 294//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 295//# sourceURL=webpack-internal:///24 296`)},function(module,exports){eval(`// IE 8- don't enum bug keys 297module.exports = ( 298 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' 299).split(','); 300 301//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 302//# sourceURL=webpack-internal:///25 303`)},function(module,exports,__webpack_require__){eval(`module.exports = !__webpack_require__(3) && !__webpack_require__(11)(function () { 304 return Object.defineProperty(__webpack_require__(14)('div'), 'a', { get: function () { return 7; } }).a != 7; 305}); 306 307//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsQ0FBZ0IsTUFBTSxtQkFBTyxDQUFDLEVBQVU7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsRUFBZSxnQkFBZ0IsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0FBQ3ZHLENBQUMiLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 308//# sourceURL=webpack-internal:///26 309`)},function(module,exports,__webpack_require__){eval(`// 7.1.1 ToPrimitive(input [, PreferredType]) 310var isObject = __webpack_require__(7); 311// instead of the ES6 spec version, we didn't implement @@toPrimitive case 312// and the second argument - flag - preferred type is a string 313module.exports = function (it, S) { 314 if (!isObject(it)) return it; 315 var fn, val; 316 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; 317 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; 318 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; 319 throw TypeError("Can't convert object to primitive value"); 320}; 321 322//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eX
vendor: 10,429 bytes, lines 322-431
322BlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 323//# sourceURL=webpack-internal:///27 324`)},function(module,exports,__webpack_require__){eval(`// 7.1.15 ToLength 325var toInteger = __webpack_require__(16); 326var min = Math.min; 327module.exports = function (it) { 328 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 329}; 330 331//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 332//# sourceURL=webpack-internal:///28 333`)},function(module,exports,__webpack_require__){eval(`// 7.1.13 ToObject(argument) 334var defined = __webpack_require__(15); 335module.exports = function (it) { 336 return Object(defined(it)); 337}; 338 339//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 340//# sourceURL=webpack-internal:///29 341`)},function(module,exports,__webpack_require__){"use strict";eval(` 342var $at = __webpack_require__(50)(true); 343 344// 21.1.3.27 String.prototype[@@iterator]() 345__webpack_require__(31)(String, 'String', function (iterated) { 346 this._t = String(iterated); // target 347 this._i = 0; // next index 348// 21.1.5.2.1 %StringIteratorPrototype%.next() 349}, function () { 350 var O = this._t; 351 var index = this._i; 352 var point; 353 if (index >= O.length) return { value: undefined, done: true }; 354 point = $at(O, index); 355 this._i += point.length; 356 return { value: point, done: false }; 357}); 358 359//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsVUFBVSxtQkFBTyxDQUFDLEVBQWM7O0FBRWhDO0FBQ0EsbUJBQU8sQ0FBQyxFQUFnQjtBQUN4Qiw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUMiLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 360//# sourceURL=webpack-internal:///30 361`)},function(module,exports,__webpack_require__){"use strict";eval(` 362var LIBRARY = __webpack_require__(21); 363var $export = __webpack_require__(9); 364var redefine = __webpack_require__(45); 365var hide = __webpack_require__(6); 366var Iterators = __webpack_require__(10); 367var $iterCreate = __webpack_require__(46); 368var setToStringTag = __webpack_require__(22); 369var getPrototypeOf = __webpack_require__(49); 370var ITERATOR = __webpack_require__(1)('iterator'); 371var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o \`next\` 372var FF_ITERATOR = '@@iterator'; 373var KEYS = 'keys'; 374var VALUES = 'values'; 375 376var returnThis = function () { return this; }; 377 378module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { 379 $iterCreate(Constructor, NAME, next); 380 var getMethod = function (kind) { 381 if (!BUGGY && kind in proto) return proto[kind]; 382 switch (kind) { 383 case KEYS: return function keys() { return new Constructor(this, kind); }; 384 case VALUES: return function values() { return new Constructor(this, kind); }; 385 } return function entries() { return new Constructor(this, kind); }; 386 }; 387 var TAG = NAME + ' Iterator'; 388 var DEF_VALUES = DEFAULT == VALUES; 389 var VALUES_BUG = false; 390 var proto = Base.prototype; 391 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; 392 var $default = $native || getMethod(DEFAULT); 393 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; 394 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; 395 var methods, key, IteratorPrototype; 396 // Fix native 397 if ($anyNative) { 398 IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); 399 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { 400 // Set @@toStringTag to native iterators 401 setToStringTag(IteratorPrototype, TAG, true); 402 // fix for some old engines 403 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); 404 } 405 } 406 // fix Array#{values, @@iterator}.name in V8 / FF 407 if (DEF_VALUES && $native && $native.name !== VALUES) { 408 VALUES_BUG = true; 409 $default = function values() { return $native.call(this); }; 410 } 411 // Define iterator 412 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { 413 hide(proto, ITERATOR, $default); 414 } 415 // Plug for library 416 Iterators[NAME] = $default; 417 Iterators[TAG] = returnThis; 418 if (DEFAULT) { 419 methods = { 420 values: DEF_VALUES ? $default : getMethod(VALUES), 421 keys: IS_SET ? $default : getMethod(KEYS), 422 entries: $entries 423 }; 424 if (FORCED) for (key in methods) { 425 if (!(key in proto)) redefine(proto, key, methods[key]); 426 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); 427 } 428 return methods; 429}; 430 431//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMsRUFBYTtBQUNwQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWdCO0FBQzFDLHFCQUFxQixtQkFBTyxDQUFDLEVBQXNCO0FBQ25ELHFCQUFxQixtQkFBTyxDQUFDLEVBQWU7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsYUFBYTs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQ0FBb0M7QUFDN0UsNkNBQTZDLG9DQUFvQztBQUNqRixLQUFLLDRCQUE0QixvQ0FBb0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQkFBbUI7QUFDbkM7QUFDQTtBQUNBLGtDQUFrQywyQkFBMkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybi
vendor: 4,651 bytes, lines 431-457
431BmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 432//# sourceURL=webpack-internal:///31 433`)},function(module,exports,__webpack_require__){eval(`// getting tag from 19.1.3.6 Object.prototype.toString() 434var cof = __webpack_require__(20); 435var TAG = __webpack_require__(1)('toStringTag'); 436// ES3 wrong here 437var ARG = cof(function () { return arguments; }()) == 'Arguments'; 438 439// fallback for IE11 Script Access Denied error 440var tryGet = function (it, key) { 441 try { 442 return it[key]; 443 } catch (e) { /* empty */ } 444}; 445 446module.exports = function (it) { 447 var O, T, B; 448 return it === undefined ? 'Undefined' : it === null ? 'Null' 449 // @@toStringTag case 450 : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T 451 // builtinTag case 452 : ARG ? cof(O) 453 // ES3 arguments fallback 454 : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; 455}; 456 457//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCO0FBQ0EsMkJBQTJCLGtCQUFrQixFQUFFOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsWUFBWTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybi
457BpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 458//# sourceURL=webpack-internal:///32 459`)},function(module,exports,__webpack_require__){"use strict";eval(` 460 461exports.__esModule = true; 462 463exports.default = function (instance, Constructor) { 464 if (!(instance instanceof Constructor)) { 465 throw new TypeError("Cannot call a class as a function"); 466 } 467}; 468//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzPzY2YjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQgNiA3IDggOSAxMCAxMSAxMiAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 469//# sourceURL=webpack-internal:///33 470`)},function(module,exports,__webpack_require__){"use strict";eval(` 471 472exports.__esModule = true; 473 474var _defineProperty = __webpack_require__(37); 475 476var _defineProperty2 = _interopRequireDefault(_defineProperty); 477 478function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 479 480exports.default = function () { 481 function defineProperties(target, props) { 482 for (var i = 0; i < props.length; i++) { 483 var descriptor = props[i]; 484 descriptor.enumerable = descriptor.enumerable || false; 485 descriptor.configurable = true; 486 if ("value" in descriptor) descriptor.writable = true; 487 (0, _defineProperty2.default)(target, descriptor.key, descriptor); 488 } 489 } 490 491 return function (Constructor, protoProps, staticProps) { 492 if (protoProps) defineProperties(Constructor.prototype, protoProps); 493 if (staticProps) defineProperties(Constructor, staticProps); 494 return Constructor; 495 }; 496}(); 497//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzLmpzP2MzMTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7O0FBRUEsc0JBQXNCLG1CQUFPLENBQUMsRUFBbUM7O0FBRWpFOztBQUVBLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci
49753cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ== 498//# sourceURL=webpack-internal:///34 499`)},function(module,exports,__webpack_require__){eval(`// fallback for non-array-like ES3 and non-enumerable old V8 strings 500var cof = __webpack_require__(20); 501// eslint-disable-next-line no-prototype-builtins 502module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { 503 return cof(it) == 'String' ? it.split('') : Object(it); 504}; 505 506//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 507//# sourceURL=webpack-internal:///35 508`)},function(module,exports,__webpack_require__){eval(`var classof = __webpack_require__(32); 509var ITERATOR = __webpack_require__(1)('iterator'); 510var Iterators = __webpack_require__(10); 511module.exports = __webpack_require__(2).getIteratorMethod = function (it) { 512 if (it != undefined) return it[ITERATOR] 513 || it['@@iterator'] 514 || Iterators[classof(it)]; 515}; 516 517//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 518//# sourceURL=webpack-internal:///36 519`)},function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(38), __esModule: true }; 520//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/MGI4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsWUFBWSxtQkFBTyxDQUFDLEVBQTJDIiwiZmlsZSI6IjM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qc1xuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDEx
520IDEyIDE2IDE3IDE4IDE5IDIwIDIxIDIyIl0sInNvdXJjZVJvb3QiOiIifQ== 521//# sourceURL=webpack-internal:///37 522`)},function(module,exports,__webpack_require__){eval(`__webpack_require__(39); 523var $Object = __webpack_require__(2).Object; 524module.exports = function defineProperty(it, key, desc) { 525 return $Object.defineProperty(it, key, desc); 526}; 527 528//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanM/ZjViMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQkFBTyxDQUFDLEVBQTBDO0FBQ2xELGNBQWMsbUJBQU8sQ0FBQyxDQUFxQjtBQUMzQztBQUNBO0FBQ0EiLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpIHtcbiAgcmV0dXJuICRPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanNcbi8vIG1vZHVsZSBpZCA9IDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQgNiA3IDggOSAxMCAxMSAxMiAxNiAxNyAxOCAxOSAyMCAyMSAyMiJdLCJzb3VyY2VSb290IjoiIn0= 529//# sourceURL=webpack-internal:///38 530`)},function(module,exports,__webpack_require__){eval(`var $export = __webpack_require__(9); 531// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) 532$export($export.S + $export.F * !__webpack_require__(3), 'Object', { defineProperty: __webpack_require__(4).f }); 533 534//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanM/OTgyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQztBQUNBLGlDQUFpQyxtQkFBTyxDQUFDLENBQWdCLGNBQWMsaUJBQWlCLG1CQUFPLENBQUMsQ0FBYyxLQUFLIiwiZmlsZSI6IjM5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0IDYgNyA4IDkgMTAgMTEgMTIgMTYgMTcgMTggMTkgMjAgMjEgMjIiXSwic291cmNlUm9vdCI6IiJ9 535//# sourceURL=webpack-internal:///39 536`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.14 / 15.2.3.14 Object.keys(O) 537var $keys = __webpack_require__(42); 538var enumBugKeys = __webpack_require__(25); 539 540module.exports = Object.keys || function keys(O) { 541 return $keys(O, enumBugKeys); 542}; 543 544//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxZQUFZLG1CQUFPLENBQUMsRUFBeUI7QUFDN0Msa0JBQWtCLG1CQUFPLENBQUMsRUFBa0I7O0FBRTVDO0FBQ0E7QUFDQSIsImZpbGUiOiI0MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 545//# sourceURL=webpack-internal:///40 546`)},function(module,exports,__webpack_require__){eval(`var document = __webpack_require__(0).document; 547module.exports = document && document.documentElement; 548 549//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQyIsImZpbGUiOiI0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qc1xuLy8gbW9kdWxlIGlkID0gN
vendor: 4,791 bytes, lines 549-595
549DFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 550//# sourceURL=webpack-internal:///41 551`)},function(module,exports,__webpack_require__){eval(`var has = __webpack_require__(8); 552var toIObject = __webpack_require__(18); 553var arrayIndexOf = __webpack_require__(43)(false); 554var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 555 556module.exports = function (object, names) { 557 var O = toIObject(object); 558 var i = 0; 559 var result = []; 560 var key; 561 for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); 562 // Don't enum bug & hidden keys 563 while (names.length > i) if (has(O, key = names[i++])) { 564 ~arrayIndexOf(result, key) || result.push(key); 565 } 566 return result; 567}; 568 569//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQyxFQUFtQjtBQUM5QyxlQUFlLG1CQUFPLENBQUMsRUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 570//# sourceURL=webpack-internal:///42 571`)},function(module,exports,__webpack_require__){eval(`// false -> Array#indexOf 572// true -> Array#includes 573var toIObject = __webpack_require__(18); 574var toLength = __webpack_require__(28); 575var toAbsoluteIndex = __webpack_require__(44); 576module.exports = function (IS_INCLUDES) { 577 return function ($this, el, fromIndex) { 578 var O = toIObject($this); 579 var length = toLength(O.length); 580 var index = toAbsoluteIndex(fromIndex, length); 581 var value; 582 // Array#includes uses SameValueZero equality algorithm 583 // eslint-disable-next-line no-self-compare 584 if (IS_INCLUDES && el != el) while (length > index) { 585 value = O[index++]; 586 // eslint-disable-next-line no-self-compare 587 if (value != value) return true; 588 // Array#indexOf ignores holes, Array#includes - not 589 } else for (;length > index; index++) if (IS_INCLUDES || index in O) { 590 if (O[index] === el) return IS_INCLUDES || index || 0; 591 } return !IS_INCLUDES && -1; 592 }; 593}; 594 595//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLEVBQWM7QUFDckMsc0JBQXNCLG1CQUFPLENBQUMsRUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFlBQVksZUFBZTtBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZX
595hPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 596//# sourceURL=webpack-internal:///43 597`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16); 598var max = Math.max; 599var min = Math.min; 600module.exports = function (index, length) { 601 index = toInteger(index); 602 return index < 0 ? max(index + length, 0) : min(index, length); 603}; 604 605//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 606//# sourceURL=webpack-internal:///44 607`)},function(module,exports,__webpack_require__){eval(`module.exports = __webpack_require__(6); 608 609//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 610//# sourceURL=webpack-internal:///45 611`)},function(module,exports,__webpack_require__){"use strict";eval(` 612var create = __webpack_require__(47); 613var descriptor = __webpack_require__(12); 614var setToStringTag = __webpack_require__(22); 615var IteratorPrototype = {}; 616 617// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() 618__webpack_require__(6)(IteratorPrototype, __webpack_require__(1)('iterator'), function () { return this; }); 619 620module.exports = function (Constructor, NAME, next) { 621 Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); 622 setToStringTag(Constructor, NAME + ' Iterator'); 623}; 624 625//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsRUFBa0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBa0I7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsRUFBc0I7QUFDbkQ7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLENBQVMscUJBQXFCLG1CQUFPLENBQUMsQ0FBUSw0QkFBNEIsYUFBYSxFQUFFOztBQUVqRztBQUNBLHFEQUFxRCw0QkFBNEI7QUFDakY7QUFDQSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 8,933 bytes, lines 625-713
625IDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 626//# sourceURL=webpack-internal:///46 627`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) 628var anObject = __webpack_require__(5); 629var dPs = __webpack_require__(48); 630var enumBugKeys = __webpack_require__(25); 631var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 632var Empty = function () { /* empty */ }; 633var PROTOTYPE = 'prototype'; 634 635// Create object with fake \`null\` prototype: use iframe Object with cleared prototype 636var createDict = function () { 637 // Thrash, waste and sodomy: IE GC bug 638 var iframe = __webpack_require__(14)('iframe'); 639 var i = enumBugKeys.length; 640 var lt = '<'; 641 var gt = '>'; 642 var iframeDocument; 643 iframe.style.display = 'none'; 644 __webpack_require__(41).appendChild(iframe); 645 iframe.src = 'javascript:'; // eslint-disable-line no-script-url 646 // createDict = iframe.contentWindow.Object; 647 // html.removeChild(iframe); 648 iframeDocument = iframe.contentWindow.document; 649 iframeDocument.open(); 650 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); 651 iframeDocument.close(); 652 createDict = iframeDocument.F; 653 while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; 654 return createDict(); 655}; 656 657module.exports = Object.create || function create(O, Properties) { 658 var result; 659 if (O !== null) { 660 Empty[PROTOTYPE] = anObject(O); 661 result = new Empty(); 662 Empty[PROTOTYPE] = null; 663 // add "__proto__" for Object.getPrototypeOf polyfill 664 result[IE_PROTO] = O; 665 } else result = createDict(); 666 return Properties === undefined ? result : dPs(result, Properties); 667}; 668 669//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLFVBQVUsbUJBQU8sQ0FBQyxFQUFlO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsRUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLEVBQVM7QUFDbkIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiI0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 670//# sourceURL=webpack-internal:///47 671`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4); 672var anObject = __webpack_require__(5); 673var getKeys = __webpack_require__(40); 674 675module.exports = __webpack_require__(3) ? Object.defineProperties : function defineProperties(O, Properties) { 676 anObject(O); 677 var keys = getKeys(Properties); 678 var length = keys.length; 679 var i = 0; 680 var P; 681 while (length > i) dP.f(O, P = keys[i++], Properties[P]); 682 return O; 683}; 684 685//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMsRUFBZ0I7O0FBRXRDLGlCQUFpQixtQkFBTyxDQUFDLENBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSJdLCJzb3VyY2VSb290IjoiIn0= 686//# sourceURL=webpack-internal:///48 687`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) 688var has = __webpack_require__(8); 689var toObject = __webpack_require__(29); 690var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 691var ObjectProto = Object.prototype; 692 693module.exports = Object.getPrototypeOf || function (O) { 694 O = toObject(O); 695 if (has(O, IE_PROTO)) return O[IE_PROTO]; 696 if (typeof O.constructor == 'function' && O instanceof O.constructor) { 697 return O.constructor.prototype; 698 } return O instanceof Object ? ObjectProto : null; 699}; 700 701//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1Il0sInNvdXJjZVJvb3QiOiIifQ== 702//# sourceURL=webpack-internal:///49 703`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16); 704var defined = __webpack_require__(15); 705// true -> String#at 706// false -> String#codePointAt 707module.exports = function (TO_STRING) { 708 return function (that, pos) { 709 var s = String(defined(that)); 710 var i = toInteger(pos); 711 var l = s.length; 712 var a, b; 713 if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
vendor: 4,872 bytes, lines 714-747
714 a = s.charCodeAt(i); 715 return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff 716 ? TO_STRING ? s.charAt(i) : a 717 : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; 718 }; 719}; 720 721//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUiXSwic291cmNlUm9vdCI6IiJ9 722//# sourceURL=webpack-internal:///50 723`)},,function(module,exports,__webpack_require__){eval(`// call something on iterator step with safe closing on error 724var anObject = __webpack_require__(5); 725module.exports = function (iterator, fn, value, entries) { 726 try { 727 return entries ? fn(anObject(value)[0], value[1]) : fn(value); 728 // 7.4.6 IteratorClose(iterator, completion) 729 } catch (e) { 730 var ret = iterator['return']; 731 if (ret !== undefined) anObject(ret.call(iterator)); 732 throw e; 733 } 734}; 735 736//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcz85YWM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qc1xuLy8gbW9kdWxlIGlkID0gNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ== 737//# sourceURL=webpack-internal:///52 738`)},function(module,exports,__webpack_require__){eval(`// check on default Array iterator 739var Iterators = __webpack_require__(10); 740var ITERATOR = __webpack_require__(1)('iterator'); 741var ArrayProto = Array.prototype; 742 743module.exports = function (it) { 744 return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); 745}; 746 747//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanM/MzIxYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0I7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qc1xuLy8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDEx
vendor: 7,377 bytes, lines 747-831
747IDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ== 748//# sourceURL=webpack-internal:///53 749`)},function(module,exports,__webpack_require__){eval(`var ITERATOR = __webpack_require__(1)('iterator'); 750var SAFE_CLOSING = false; 751 752try { 753 var riter = [7][ITERATOR](); 754 riter['return'] = function () { SAFE_CLOSING = true; }; 755 // eslint-disable-next-line no-throw-literal 756 Array.from(riter, function () { throw 2; }); 757} catch (e) { /* empty */ } 758 759module.exports = function (exec, skipClosing) { 760 if (!skipClosing && !SAFE_CLOSING) return false; 761 var safe = false; 762 try { 763 var arr = [7]; 764 var iter = arr[ITERATOR](); 765 iter.next = function () { return { done: safe = true }; }; 766 arr[ITERATOR] = function () { return iter; }; 767 exec(arr); 768 } catch (e) { /* empty */ } 769 return safe; 770}; 771 772//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzPzc1OGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0I7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQSxpQ0FBaUMsU0FBUyxFQUFFO0FBQzVDLENBQUMsWUFBWTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxxQkFBcUI7QUFDM0QsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQSxHQUFHLFlBQVk7QUFDZjtBQUNBIiwiZmlsZSI6IjU0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCA2IDcgOCA5IDEwIDExIDEyIDE0Il0sInNvdXJjZVJvb3QiOiIifQ== 773//# sourceURL=webpack-internal:///54 774`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(63); 775var global = __webpack_require__(0); 776var hide = __webpack_require__(6); 777var Iterators = __webpack_require__(10); 778var TO_STRING_TAG = __webpack_require__(1)('toStringTag'); 779 780var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 781 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + 782 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + 783 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + 784 'TextTrackList,TouchList').split(','); 785 786for (var i = 0; i < DOMIterables.length; i++) { 787 var NAME = DOMIterables[i]; 788 var Collection = global[NAME]; 789 var proto = Collection && Collection.prototype; 790 if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); 791 Iterators[NAME] = Iterators.Array; 792} 793 794//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsYUFBYSxtQkFBTyxDQUFDLENBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLENBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxDQUFROztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA1NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxMyAxNSJdLCJzb3VyY2VSb290IjoiIn0= 795//# sourceURL=webpack-internal:///56 796`)},,,,,,,function(module,exports,__webpack_require__){"use strict";eval(` 797var addToUnscopables = __webpack_require__(64); 798var step = __webpack_require__(65); 799var Iterators = __webpack_require__(10); 800var toIObject = __webpack_require__(18); 801 802// 22.1.3.4 Array.prototype.entries() 803// 22.1.3.13 Array.prototype.keys() 804// 22.1.3.29 Array.prototype.values() 805// 22.1.3.30 Array.prototype[@@iterator]() 806module.exports = __webpack_require__(31)(Array, 'Array', function (iterated, kind) { 807 this._t = toIObject(iterated); // target 808 this._i = 0; // next index 809 this._k = kind; // kind 810// 22.1.5.2.1 %ArrayIteratorPrototype%.next() 811}, function () { 812 var O = this._t; 813 var kind = this._k; 814 var index = this._i++; 815 if (!O || index >= O.length) { 816 this._t = undefined; 817 return step(1); 818 } 819 if (kind == 'keys') return step(0, index); 820 if (kind == 'values') return step(0, O[index]); 821 return step(0, [index, O[index]]); 822}, 'values'); 823 824// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) 825Iterators.Arguments = Iterators.Array; 826 827addToUnscopables('keys'); 828addToUnscopables('values'); 829addToUnscopables('entries'); 830 831//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix1QkFBdUIsbUJBQU8sQ0FBQyxFQUF1QjtBQUN0RCxXQUFXLG1CQUFPLENBQUMsRUFBYztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QU
vendor: 12,552 bytes, lines 831-961
831FDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjYzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTMgMTUiXSwic291cmNlUm9vdCI6IiJ9 832//# sourceURL=webpack-internal:///63 833`)},function(module,exports){eval(`module.exports = function () { /* empty */ }; 834 835//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QiIsImZpbGUiOiI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTMgMTUiXSwic291cmNlUm9vdCI6IiJ9 836//# sourceURL=webpack-internal:///64 837`)},function(module,exports){eval(`module.exports = function (done, value) { 838 return { value: value, done: !!done }; 839}; 840 841//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVTtBQUNWIiwiZmlsZSI6IjY1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxMyAxNSJdLCJzb3VyY2VSb290IjoiIn0= 842//# sourceURL=webpack-internal:///65 843`)},,,,function(module,exports,__webpack_require__){"use strict";eval(` 844// 25.4.1.5 NewPromiseCapability(C) 845var aFunction = __webpack_require__(19); 846 847function PromiseCapability(C) { 848 var resolve, reject; 849 this.promise = new C(function ($$resolve, $$reject) { 850 if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); 851 resolve = $$resolve; 852 reject = $$reject; 853 }); 854 this.resolve = aFunction(resolve); 855 this.reject = aFunction(reject); 856} 857 858module.exports.f = function (C) { 859 return new PromiseCapability(C); 860}; 861 862//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/YTgwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gNjlcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 863//# sourceURL=webpack-internal:///69 864`)},,function(module,exports,__webpack_require__){eval(`// 7.3.20 SpeciesConstructor(O, defaultConstructor) 865var anObject = __webpack_require__(5); 866var aFunction = __webpack_require__(19); 867var SPECIES = __webpack_require__(1)('species'); 868module.exports = function (O, D) { 869 var C = anObject(O).constructor; 870 var S; 871 return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); 872}; 873 874//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanM/YjdjYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLENBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI3MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA3MVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0Il0sInNvdXJjZVJvb3QiOiIifQ== 875//# sourceURL=webpack-internal:///71 876`)},function(module,exports,__webpack_require__){eval(`var ctx = __webpack_require__(13); 877var invoke = __webpack_require__(101); 878var html = __webpack_require__(41); 879var cel = __webpack_require__(14); 880var global = __webpack_require__(0); 881var process = global.process; 882var setTask = global.setImmediate; 883var clearTask = global.clearImmediate; 884var MessageChannel = global.MessageChannel; 885var Dispatch = global.Dispatch; 886var counter = 0; 887var queue = {}; 888var ONREADYSTATECHANGE = 'onreadystatechange'; 889var defer, channel, port; 890var run = function () { 891 var id = +this; 892 // eslint-disable-next-line no-prototype-builtins 893 if (queue.hasOwnProperty(id)) { 894 var fn = queue[id]; 895 delete queue[id]; 896 fn(); 897 } 898}; 899var listener = function (event) { 900 run.call(event.data); 901}; 902// Node.js 0.9+ & IE10+ has setImmediate, otherwise: 903if (!setTask || !clearTask) { 904 setTask = function setImmediate(fn) { 905 var args = []; 906 var i = 1; 907 while (arguments.length > i) args.push(arguments[i++]); 908 queue[++counter] = function () { 909 // eslint-disable-next-line no-new-func 910 invoke(typeof fn == 'function' ? fn : Function(fn), args); 911 }; 912 defer(counter); 913 return counter; 914 }; 915 clearTask = function clearImmediate(id) { 916 delete queue[id]; 917 }; 918 // Node.js 0.8- 919 if (__webpack_require__(20)(process) == 'process') { 920 defer = function (id) { 921 process.nextTick(ctx(run, id, 1)); 922 }; 923 // Sphere (JS game engine) Dispatch API 924 } else if (Dispatch && Dispatch.now) { 925 defer = function (id) { 926 Dispatch.now(ctx(run, id, 1)); 927 }; 928 // Browsers with MessageChannel, includes WebWorkers 929 } else if (MessageChannel) { 930 channel = new MessageChannel(); 931 port = channel.port2; 932 channel.port1.onmessage = listener; 933 defer = ctx(port.postMessage, port, 1); 934 // Browsers with postMessage, skip WebWorkers 935 // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' 936 } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { 937 defer = function (id) { 938 global.postMessage(id + '', '*'); 939 }; 940 global.addEventListener('message', listener, false); 941 // IE8- 942 } else if (ONREADYSTATECHANGE in cel('script')) { 943 defer = function (id) { 944 html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { 945 html.removeChild(this); 946 run.call(id); 947 }; 948 }; 949 // Rest old browsers 950 } else { 951 defer = function (id) { 952 setTimeout(ctx(run, id, 1), 0); 953 }; 954 } 955} 956module.exports = { 957 set: setTask, 958 clear: clearTask 959}; 960 961//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanM/MmY4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQixhQUFhLG1CQUFPLENBQUMsR0FBVztBQUNoQyxXQUFXLG1CQUFPLENBQUMsRUFBUztBQUM1QixVQUFVLG1CQUFPLENBQUMsRUFBZTtBQUNqQyxhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBTyxDQUFDLEVBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjcyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUp
961IERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdF
961IGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 962//# sourceURL=webpack-internal:///72 963`)},function(module,exports){eval(`module.exports = function (exec) { 964 try { 965 return { e: false, v: exec() }; 966 } catch (e) { 967 return { e: true, v: e }; 968 } 969}; 970 971//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanM/NzRkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLEdBQUc7QUFDSCxZQUFZO0FBQ1o7QUFDQSIsImZpbGUiOiI3My5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcGVyZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 972//# sourceURL=webpack-internal:///73 973`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5); 974var isObject = __webpack_require__(7); 975var newPromiseCapability = __webpack_require__(69); 976 977module.exports = function (C, x) { 978 anObject(C); 979 if (isObject(x) && x.constructor === C) return x; 980 var promiseCapability = newPromiseCapability.f(C); 981 var resolve = promiseCapability.resolve; 982 resolve(x); 983 return promiseCapability.promise; 984}; 985 986//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcz83Yzk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLDJCQUEyQixtQkFBTyxDQUFDLEVBQTJCOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ijc0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 987//# sourceURL=webpack-internal:///74 988`)},,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(96), __esModule: true }; 989//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanM/ZmZmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IsWUFBWSxtQkFBTyxDQUFDLEVBQTRCIiwiZmlsZSI6Ijk1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2VcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 990//# sourceURL=webpack-internal:///95 991`)},function(module,exports,__webpack_require__){eval(`__webpack_require__(97); 992__webpack_require__(30); 993__webpack_require__(56); 994__webpack_require__(98); 995__webpack_require__(106); 996__webpack_require__(107); 997module.exports = __webpack_require__(2).Promise; 998 999//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanM/NTM5OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQk
vendor: 13,345 bytes, lines 999-1291
999FBTyxDQUFDLEVBQWlDO0FBQ3pDLG1CQUFPLENBQUMsRUFBZ0M7QUFDeEMsbUJBQU8sQ0FBQyxFQUE2QjtBQUNyQyxtQkFBTyxDQUFDLEVBQXdCO0FBQ2hDLG1CQUFPLENBQUMsR0FBZ0M7QUFDeEMsbUJBQU8sQ0FBQyxHQUE0QjtBQUNwQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFrQiIsImZpbGUiOiI5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UudHJ5Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvX2NvcmUnKS5Qcm9taXNlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanNcbi8vIG1vZHVsZSBpZCA9IDk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1000//# sourceURL=webpack-internal:///96 1001`)},function(module,exports){eval(` 1002//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiI5Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbXSwic291cmNlUm9vdCI6IiJ9 1003//# sourceURL=webpack-internal:///97 1004`)},function(module,exports,__webpack_require__){"use strict";eval(` 1005var LIBRARY = __webpack_require__(21); 1006var global = __webpack_require__(0); 1007var ctx = __webpack_require__(13); 1008var classof = __webpack_require__(32); 1009var $export = __webpack_require__(9); 1010var isObject = __webpack_require__(7); 1011var aFunction = __webpack_require__(19); 1012var anInstance = __webpack_require__(99); 1013var forOf = __webpack_require__(100); 1014var speciesConstructor = __webpack_require__(71); 1015var task = __webpack_require__(72).set; 1016var microtask = __webpack_require__(102)(); 1017var newPromiseCapabilityModule = __webpack_require__(69); 1018var perform = __webpack_require__(73); 1019var userAgent = __webpack_require__(103); 1020var promiseResolve = __webpack_require__(74); 1021var PROMISE = 'Promise'; 1022var TypeError = global.TypeError; 1023var process = global.process; 1024var versions = process && process.versions; 1025var v8 = versions && versions.v8 || ''; 1026var $Promise = global[PROMISE]; 1027var isNode = classof(process) == 'process'; 1028var empty = function () { /* empty */ }; 1029var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; 1030var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; 1031 1032var USE_NATIVE = !!function () { 1033 try { 1034 // correct subclassing with @@species support 1035 var promise = $Promise.resolve(1); 1036 var FakePromise = (promise.constructor = {})[__webpack_require__(1)('species')] = function (exec) { 1037 exec(empty, empty); 1038 }; 1039 // unhandled rejections tracking support, NodeJS Promise without it fails @@species test 1040 return (isNode || typeof PromiseRejectionEvent == 'function') 1041 && promise.then(empty) instanceof FakePromise 1042 // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables 1043 // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 1044 // we can't detect it synchronously, so just check versions 1045 && v8.indexOf('6.6') !== 0 1046 && userAgent.indexOf('Chrome/66') === -1; 1047 } catch (e) { /* empty */ } 1048}(); 1049 1050// helpers 1051var isThenable = function (it) { 1052 var then; 1053 return isObject(it) && typeof (then = it.then) == 'function' ? then : false; 1054}; 1055var notify = function (promise, isReject) { 1056 if (promise._n) return; 1057 promise._n = true; 1058 var chain = promise._c; 1059 microtask(function () { 1060 var value = promise._v; 1061 var ok = promise._s == 1; 1062 var i = 0; 1063 var run = function (reaction) { 1064 var handler = ok ? reaction.ok : reaction.fail; 1065 var resolve = reaction.resolve; 1066 var reject = reaction.reject; 1067 var domain = reaction.domain; 1068 var result, then, exited; 1069 try { 1070 if (handler) { 1071 if (!ok) { 1072 if (promise._h == 2) onHandleUnhandled(promise); 1073 promise._h = 1; 1074 } 1075 if (handler === true) result = value; 1076 else { 1077 if (domain) domain.enter(); 1078 result = handler(value); // may throw 1079 if (domain) { 1080 domain.exit(); 1081 exited = true; 1082 } 1083 } 1084 if (result === reaction.promise) { 1085 reject(TypeError('Promise-chain cycle')); 1086 } else if (then = isThenable(result)) { 1087 then.call(result, resolve, reject); 1088 } else resolve(result); 1089 } else reject(value); 1090 } catch (e) { 1091 if (domain && !exited) domain.exit(); 1092 reject(e); 1093 } 1094 }; 1095 while (chain.length > i) run(chain[i++]); // variable length - can't use forEach 1096 promise._c = []; 1097 promise._n = false; 1098 if (isReject && !promise._h) onUnhandled(promise); 1099 }); 1100}; 1101var onUnhandled = function (promise) { 1102 task.call(global, function () { 1103 var value = promise._v; 1104 var unhandled = isUnhandled(promise); 1105 var result, handler, console; 1106 if (unhandled) { 1107 result = perform(function () { 1108 if (isNode) { 1109 process.emit('unhandledRejection', value, promise); 1110 } else if (handler = global.onunhandledrejection) { 1111 handler({ promise: promise, reason: value }); 1112 } else if ((console = global.console) && console.error) { 1113 console.error('Unhandled promise rejection', value); 1114 } 1115 }); 1116 // Browsers should not trigger \`rejectionHandled\` event if it was handled here, NodeJS - should 1117 promise._h = isNode || isUnhandled(promise) ? 2 : 1; 1118 } promise._a = undefined; 1119 if (unhandled && result.e) throw result.v; 1120 }); 1121}; 1122var isUnhandled = function (promise) { 1123 return promise._h !== 1 && (promise._a || promise._c).length === 0; 1124}; 1125var onHandleUnhandled = function (promise) { 1126 task.call(global, function () { 1127 var handler; 1128 if (isNode) { 1129 process.emit('rejectionHandled', promise); 1130 } else if (handler = global.onrejectionhandled) { 1131 handler({ promise: promise, reason: promise._v }); 1132 } 1133 }); 1134}; 1135var $reject = function (value) { 1136 var promise = this; 1137 if (promise._d) return; 1138 promise._d = true; 1139 promise = promise._w || promise; // unwrap 1140 promise._v = value; 1141 promise._s = 2; 1142 if (!promise._a) promise._a = promise._c.slice(); 1143 notify(promise, true); 1144}; 1145var $resolve = function (value) { 1146 var promise = this; 1147 var then; 1148 if (promise._d) return; 1149 promise._d = true; 1150 promise = promise._w || promise; // unwrap 1151 try { 1152 if (promise === value) throw TypeError("Promise can't be resolved itself"); 1153 if (then = isThenable(value)) { 1154 microtask(function () { 1155 var wrapper = { _w: promise, _d: false }; // wrap 1156 try { 1157 then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); 1158 } catch (e) { 1159 $reject.call(wrapper, e); 1160 } 1161 }); 1162 } else { 1163 promise._v = value; 1164 promise._s = 1; 1165 notify(promise, false); 1166 } 1167 } catch (e) { 1168 $reject.call({ _w: promise, _d: false }, e); // wrap 1169 } 1170}; 1171 1172// constructor polyfill 1173if (!USE_NATIVE) { 1174 // 25.4.3.1 Promise(executor) 1175 $Promise = function Promise(executor) { 1176 anInstance(this, $Promise, PROMISE, '_h'); 1177 aFunction(executor); 1178 Internal.call(this); 1179 try { 1180 executor(ctx($resolve, this, 1), ctx($reject, this, 1)); 1181 } catch (err) { 1182 $reject.call(this, err); 1183 } 1184 }; 1185 // eslint-disable-next-line no-unused-vars 1186 Internal = function Promise(executor) { 1187 this._c = []; // <- awaiting reactions 1188 this._a = undefined; // <- checked in isUnhandled reactions 1189 this._s = 0; // <- state 1190 this._d = false; // <- done 1191 this._v = undefined; // <- value 1192 this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled 1193 this._n = false; // <- notify 1194 }; 1195 Internal.prototype = __webpack_require__(104)($Promise.prototype, { 1196 // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) 1197 then: function then(onFulfilled, onRejected) { 1198 var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); 1199 reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; 1200 reaction.fail = typeof onRejected == 'function' && onRejected; 1201 reaction.domain = isNode ? process.domain : undefined; 1202 this._c.push(reaction); 1203 if (this._a) this._a.push(reaction); 1204 if (this._s) notify(this, false); 1205 return reaction.promise; 1206 }, 1207 // 25.4.5.1 Promise.prototype.catch(onRejected) 1208 'catch': function (onRejected) { 1209 return this.then(undefined, onRejected); 1210 } 1211 }); 1212 OwnPromiseCapability = function () { 1213 var promise = new Internal(); 1214 this.promise = promise; 1215 this.resolve = ctx($resolve, promise, 1); 1216 this.reject = ctx($reject, promise, 1); 1217 }; 1218 newPromiseCapabilityModule.f = newPromiseCapability = function (C) { 1219 return C === $Promise || C === Wrapper 1220 ? new OwnPromiseCapability(C) 1221 : newGenericPromiseCapability(C); 1222 }; 1223} 1224 1225$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); 1226__webpack_require__(22)($Promise, PROMISE); 1227__webpack_require__(105)(PROMISE); 1228Wrapper = __webpack_require__(2)[PROMISE]; 1229 1230// statics 1231$export($export.S + $export.F * !USE_NATIVE, PROMISE, { 1232 // 25.4.4.5 Promise.reject(r) 1233 reject: function reject(r) { 1234 var capability = newPromiseCapability(this); 1235 var $$reject = capability.reject; 1236 $$reject(r); 1237 return capability.promise; 1238 } 1239}); 1240$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { 1241 // 25.4.4.6 Promise.resolve(x) 1242 resolve: function resolve(x) { 1243 return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); 1244 } 1245}); 1246$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(54)(function (iter) { 1247 $Promise.all(iter)['catch'](empty); 1248})), PROMISE, { 1249 // 25.4.4.1 Promise.all(iterable) 1250 all: function all(iterable) { 1251 var C = this; 1252 var capability = newPromiseCapability(C); 1253 var resolve = capability.resolve; 1254 var reject = capability.reject; 1255 var result = perform(function () { 1256 var values = []; 1257 var index = 0; 1258 var remaining = 1; 1259 forOf(iterable, false, function (promise) { 1260 var $index = index++; 1261 var alreadyCalled = false; 1262 values.push(undefined); 1263 remaining++; 1264 C.resolve(promise).then(function (value) { 1265 if (alreadyCalled) return; 1266 alreadyCalled = true; 1267 values[$index] = value; 1268 --remaining || resolve(values); 1269 }, reject); 1270 }); 1271 --remaining || resolve(values); 1272 }); 1273 if (result.e) reject(result.v); 1274 return capability.promise; 1275 }, 1276 // 25.4.4.4 Promise.race(iterable) 1277 race: function race(iterable) { 1278 var C = this; 1279 var capability = newPromiseCapability(C); 1280 var reject = capability.reject; 1281 var result = perform(function () { 1282 forOf(iterable, false, function (promise) { 1283 C.resolve(promise).then(capability.resolve, reject); 1284 }); 1285 }); 1286 if (result.e) reject(result.v); 1287 return capability.promise; 1288 } 1289}); 1290 1291//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanM/MDk3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTtBQUNiLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxDQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsWUFBWSxtQkFBTyxDQUFDLEdBQVc7QUFDL0IseUJBQXlCLG1CQUFPLENBQUMsRUFBd0I7QUFDekQsV0FBVyxtQkFBTyxDQUFDLEVBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsR0FBYztBQUN0QyxpQ0FBaUMsbUJBQU8sQ0FBQyxFQUEyQjtBQUNwRSxjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxnQkFBZ0IsbUJBQU8sQ0FBQyxHQUFlO0FBQ3ZDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW9CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRSxtQkFBTyxDQUFDLENBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLFlBQVk7QUFDZixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG1CQUFtQixrQ0FBa0M7QUFDckQsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZUFBZSx1Q0FBdUM7QUFDdEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwwQkFBMEI7QUFDakQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxrQkFBa0IseUJBQXlCLEtBQUs7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQix3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtB
1291QUNwQix3QkFBd0I7QUFDeEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQjtBQUNBLHVCQUF1QixtQkFBTyxDQUFDLEdBQWlCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBMEQsb0JBQW9CO0FBQzlFLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsbUJBQU8sQ0FBQyxHQUFnQjtBQUN4QixVQUFVLG1CQUFPLENBQUMsQ0FBUzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsZ0RBQWdELG1CQUFPLENBQUMsRUFBZ0I7QUFDeEU7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ijk4LmpzIiwic291cmNlc0NvbnRlbnQiOls
vendor: 13,467 bytes, line 1291
1291iJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG
vendor: 8,081 bytes, lines 1291-1363
12915cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gOThcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 1292//# sourceURL=webpack-internal:///98 1293`)},function(module,exports){eval(`module.exports = function (it, Constructor, name, forbiddenField) { 1294 if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { 1295 throw TypeError(name + ': incorrect invocation!'); 1296 } return it; 1297}; 1298 1299//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzP2Q4YWMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6Ijk5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1300//# sourceURL=webpack-internal:///99 1301`)},function(module,exports,__webpack_require__){eval(`var ctx = __webpack_require__(13); 1302var call = __webpack_require__(52); 1303var isArrayIter = __webpack_require__(53); 1304var anObject = __webpack_require__(5); 1305var toLength = __webpack_require__(28); 1306var getIterFn = __webpack_require__(36); 1307var BREAK = {}; 1308var RETURN = {}; 1309var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { 1310 var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); 1311 var f = ctx(fn, that, entries ? 2 : 1); 1312 var index = 0; 1313 var length, step, iterator, result; 1314 if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); 1315 // fast case for arrays with default iterator 1316 if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { 1317 result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); 1318 if (result === BREAK || result === RETURN) return result; 1319 } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { 1320 result = call(iterator, f, step.value, entries); 1321 if (result === BREAK || result === RETURN) return result; 1322 } 1323}; 1324exports.BREAK = BREAK; 1325exports.RETURN = RETURN; 1326 1327//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qcz8zNTZiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxFQUFjO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLEVBQTRCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxpQkFBaUIsRUFBRTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLGdCQUFnQjtBQUNuRjtBQUNBO0FBQ0EsR0FBRyw0Q0FBNEMsZ0NBQWdDO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIEJSRUFLID0ge307XG52YXIgUkVUVVJOID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHtcbiAgdmFyIGl0ZXJGbiA9IElURVJBVE9SID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcmFibGU7IH0gOiBnZXRJdGVyRm4oaXRlcmFibGUpO1xuICB2YXIgZiA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3IsIHJlc3VsdDtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZiAoaXNBcnJheUl0ZXIoaXRlckZuKSkgZm9yIChsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgIHJlc3VsdCA9IGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTspIHtcbiAgICByZXN1bHQgPSBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcbiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgPSBCUkVBSztcbmV4cG9ydHMuUkVUVVJOID0gUkVUVVJOO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMTAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1328//# sourceURL=webpack-internal:///100 1329`)},function(module,exports){eval(`// fast apply, http://jsperf.lnkit.com/fast-apply/5 1330module.exports = function (fn, args, that) { 1331 var un = that === undefined; 1332 switch (args.length) { 1333 case 0: return un ? fn() 1334 : fn.call(that); 1335 case 1: return un ? fn(args[0]) 1336 : fn.call(that, args[0]); 1337 case 2: return un ? fn(args[0], args[1]) 1338 : fn.call(that, args[0], args[1]); 1339 case 3: return un ? fn(args[0], args[1], args[2]) 1340 : fn.call(that, args[0], args[1], args[2]); 1341 case 4: return un ? fn(args[0], args[1], args[2], args[3]) 1342 : fn.call(that, args[0], args[1], args[2], args[3]); 1343 } return fn.apply(that, args); 1344}; 1345 1346//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcz85MjdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiMTAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgYXJncywgdGhhdCkge1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG4gICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgfSByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJncyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qc1xuLy8gbW9kdWxlIGlkID0gMTAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1347//# sourceURL=webpack-internal:///101 1348`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0); 1349var macrotask = __webpack_require__(72).set; 1350var Observer = global.MutationObserver || global.WebKitMutationObserver; 1351var process = global.process; 1352var Promise = global.Promise; 1353var isNode = __webpack_require__(20)(process) == 'process'; 1354 1355module.exports = function () { 1356 var head, last, notify; 1357 1358 var flush = function () { 1359 var parent, fn; 1360 if (isNode && (parent = process.domain)) parent.exit(); 1361 while (head) { 1362 fn = head.fn; 1363 head = head.next;
vendor: 2,874 bytes, lines 1364-1418
1364 try { 1365 fn(); 1366 } catch (e) { 1367 if (head) notify(); 1368 else last = undefined; 1369 throw e; 1370 } 1371 } last = undefined; 1372 if (parent) parent.enter(); 1373 }; 1374 1375 // Node.js 1376 if (isNode) { 1377 notify = function () { 1378 process.nextTick(flush); 1379 }; 1380 // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 1381 } else if (Observer && !(global.navigator && global.navigator.standalone)) { 1382 var toggle = true; 1383 var node = document.createTextNode(''); 1384 new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new 1385 notify = function () { 1386 node.data = toggle = !toggle; 1387 }; 1388 // environments with maybe non-completely correct, but existent Promise 1389 } else if (Promise && Promise.resolve) { 1390 // Promise.resolve without an argument throws an error in LG WebOS 2 1391 var promise = Promise.resolve(undefined); 1392 notify = function () { 1393 promise.then(flush); 1394 }; 1395 // for other environments - macrotask based on: 1396 // - setImmediate 1397 // - MessageChannel 1398 // - window.postMessag 1399 // - onreadystatechange 1400 // - setTimeout 1401 } else { 1402 notify = function () { 1403 // strange IE + webpack dev server bug - use .call(global) 1404 macrotask.call(global, flush); 1405 }; 1406 } 1407 1408 return function (fn) { 1409 var task = { fn: fn, next: undefined }; 1410 if (last) last.next = task; 1411 if (!head) { 1412 head = task; 1413 notify(); 1414 } last = task; 1415 }; 1416}; 1417 1418//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcz9mMzYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLEVBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtQkFBTyxDQUFDLEVBQVE7O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLHNCQUFzQixFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjEwMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjt
1418cbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1419//# sourceURL=webpack-internal:///102 1420`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0); 1421var navigator = global.navigator; 1422 1423module.exports = navigator && navigator.userAgent || ''; 1424 1425//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanM/ODk0NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQzs7QUFFQSIsImZpbGUiOiIxMDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 1426//# sourceURL=webpack-internal:///103 1427`)},function(module,exports,__webpack_require__){eval(`var hide = __webpack_require__(6); 1428module.exports = function (target, src, safe) { 1429 for (var key in src) { 1430 if (safe && target[key]) target[key] = src[key]; 1431 else hide(target, key, src[key]); 1432 } return target; 1433}; 1434 1435//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcz9jNDdmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwiZmlsZSI6IjEwNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybi
1435B0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMiAzIDQiXSwic291cmNlUm9vdCI6IiJ9 1436//# sourceURL=webpack-internal:///104 1437`)},function(module,exports,__webpack_require__){"use strict";eval(` 1438var global = __webpack_require__(0); 1439var core = __webpack_require__(2); 1440var dP = __webpack_require__(4); 1441var DESCRIPTORS = __webpack_require__(3); 1442var SPECIES = __webpack_require__(1)('species'); 1443 1444module.exports = function (KEY) { 1445 var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; 1446 if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { 1447 configurable: true, 1448 get: function () { return this; } 1449 }); 1450}; 1451 1452//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC1zcGVjaWVzLmpzPzZkMWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixrQkFBa0IsbUJBQU8sQ0FBQyxDQUFnQjtBQUMxQyxjQUFjLG1CQUFPLENBQUMsQ0FBUTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYTtBQUNuQyxHQUFHO0FBQ0giLCJmaWxlIjoiMTA1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
vendor: 4,385 bytes, lines 1452-1490
1452UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkge1xuICB2YXIgQyA9IHR5cGVvZiBjb3JlW0tFWV0gPT0gJ2Z1bmN0aW9uJyA/IGNvcmVbS0VZXSA6IGdsb2JhbFtLRVldO1xuICBpZiAoREVTQ1JJUFRPUlMgJiYgQyAmJiAhQ1tTUEVDSUVTXSkgZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDIgMyA0Il0sInNvdXJjZVJvb3QiOiIifQ== 1453//# sourceURL=webpack-internal:///105 1454`)},function(module,exports,__webpack_require__){"use strict";eval(`// https://github.com/tc39/proposal-promise-finally 1455 1456var $export = __webpack_require__(9); 1457var core = __webpack_require__(2); 1458var global = __webpack_require__(0); 1459var speciesConstructor = __webpack_require__(71); 1460var promiseResolve = __webpack_require__(74); 1461 1462$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { 1463 var C = speciesConstructor(this, core.Promise || global.Promise); 1464 var isFunction = typeof onFinally == 'function'; 1465 return this.then( 1466 isFunction ? function (x) { 1467 return promiseResolve(C, onFinally()).then(function () { return x; }); 1468 } : onFinally, 1469 isFunction ? function (e) { 1470 return promiseResolve(C, onFinally()).then(function () { throw e; }); 1471 } : onFinally 1472 ); 1473} }); 1474 1475//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcz8xMmEwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ2E7QUFDYixjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixhQUFhLG1CQUFPLENBQUMsQ0FBVztBQUNoQyx5QkFBeUIsbUJBQU8sQ0FBQyxFQUF3QjtBQUN6RCxxQkFBcUIsbUJBQU8sQ0FBQyxFQUFvQjs7QUFFakQsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThELFVBQVUsRUFBRTtBQUMxRSxLQUFLO0FBQ0w7QUFDQSw4REFBOEQsU0FBUyxFQUFFO0FBQ3pFLEtBQUs7QUFDTDtBQUNBLENBQUMsRUFBRSIsImZpbGUiOiIxMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 1476//# sourceURL=webpack-internal:///106 1477`)},function(module,exports,__webpack_require__){"use strict";eval(` 1478// https://github.com/tc39/proposal-promise-try 1479var $export = __webpack_require__(9); 1480var newPromiseCapability = __webpack_require__(69); 1481var perform = __webpack_require__(73); 1482 1483$export($export.S, 'Promise', { 'try': function (callbackfn) { 1484 var promiseCapability = newPromiseCapability.f(this); 1485 var result = perform(callbackfn); 1486 (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); 1487 return promiseCapability.promise; 1488} }); 1489 1490//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzPzhjYTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxDQUFXO0FBQ2pDLDJCQUEyQixtQk
1490FBTyxDQUFDLEVBQTJCO0FBQzlELGNBQWMsbUJBQU8sQ0FBQyxFQUFZOztBQUVsQywrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUUiLCJmaWxlIjoiMTA3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS10cnlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4vX3BlcmZvcm0nKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdQcm9taXNlJywgeyAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4pIHtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZih0aGlzKTtcbiAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oY2FsbGJhY2tmbik7XG4gIChyZXN1bHQuZSA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDdcbi8vIG1vZHVsZSBjaHVua3MgPSAyIDMgNCJdLCJzb3VyY2VSb290IjoiIn0= 1491//# sourceURL=webpack-internal:///107 1492`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(g,n,t){g.exports=t(210)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); 1493/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__ = __webpack_require__(95); 1494/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise__); 1495/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(33); 1496/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__); 1497/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(34); 1498/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__); 1499 1500 1501 1502 1503var Shopping = function () { 1504 function Shopping(url, elemento, velo) { 1505 __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Shopping); 1506 1507 this.url = window.location.protocol + '//' + window.location.host + url; 1508 this.myBooking = elemento; 1509 this.shoppingCartVelo = velo; 1510 this.shoppingCartClose = 'carrito-top__close'; 1511 this.shoppingWrap = null; 1512 this.init(); 1513 } 1514 1515 __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(Shopping, [{ 1516 key: 'init', 1517 value: function init() { 1518 var _this = this; 1519 1520 document.addEventListener('click', function (event) { 1521 var select = event.target; 1522 if (select.classList.contains(_this.myBooking)) { 1523 _this.createModal(); 1524 } 1525 1526 if (select.classList.contains(_this.shoppingCartVelo) || select.classList.contains(_this.shoppingCartClose)) { 1527 _this.closeModal(_this.shoppingCartVelo); 1528 } 1529 }); 1530 1531 document.addEventListener('keyup', function (event) { 1532 if (event.key === 'Escape') { 1533 _this.closeModal(_this.shoppingCartVelo); 1534 } 1535 }); 1536 } 1537 }, { 1538 key: 'createModal', 1539 value: function createModal() { 1540 var bodyGeneric = document.querySelector('body'); 1541 var overlay = 'div'; 1542 overlay = document.createElement(overlay); 1543 overlay.id = 'bc_carrito_top_velo'; 1544 overlay.className = this.shoppingCartVelo; 1545 overlay.style.height = document.documentElement.clientHeight + 300 + 'px'; 1546 document.body.appendChild(overlay); 1547 bodyGeneric.style.overflow = 'hidden'; 1548 1549 this.shoppingCartConection(); 1550 } 1551 }, { 1552 key: 'shoppingCartConection', 1553 value: function shoppingCartConection() { 1554 fetch(this.url).then(this.shoppingCartHtml).catch(function (error) { 1555 console.log('Error making the request: ' + error); 1556 }); 1557 } 1558 }, { 1559 key: 'shoppingCartHtml', 1560 value: function shoppingCartHtml(response) { 1561 if (response.ok) { 1562 response.text().then(function (text) { 1563 document.body.insertAdjacentHTML('beforeend', text); 1564 }); 1565 } else { 1566 return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a.reject(response.statusText); 1567 } 1568 } 1569 }, { 1570 key: 'closeModal', 1571 value: function closeModal(item) { 1572 var bodyGeneric = document.querySelector('body'); 1573 var element = document.querySelector('.' + item); 1574 this.shoppingWrap = document.querySelector('.carrito-top__wrap'); 1575 1576 if (element && this.shoppingWrap) { 1577 element.remove(); 1578 this.shoppingWrap.remove(); 1579 bodyGeneric.removeAttribute('style'); 1580 } 1581 } 1582 }]); 1583 1584 return Shopping; 1585}(); 1586 1587/* harmony default export */ __webpack_exports__["default"] = (Shopping); 1588 1589 1590document.addEventListener('DOMContentLoaded', function () { 1591 var elementShoppingCart = document.querySelector('.mireserva').dataset.url; 1592 new Shopping(elementShoppingCart, 'mireserva', 'carrito-top__velo'); 1593}); 1594//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvc2hvcHBpbmdfY2FydF90b3AuanM/YWQ3YSJdLCJuYW1lcyI6WyJTaG9wcGluZyIsInVybCIsImVsZW1lbnRvIiwidmVsbyIsIndpbmRvdyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwibXlCb29raW5nIiwic2hvcHBpbmdDYXJ0VmVsbyIsInNob3BwaW5nQ2FydENsb3NlIiwic2hvcHBpbmdXcmFwIiwiaW5pdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VsZWN0IiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJjcmVhdGVNb2RhbCIsImNsb3NlTW9kYWwiLCJrZXkiLCJib2R5R2VuZXJpYyIsInF1ZXJ5U2VsZWN0b3IiLCJvdmVybGF5IiwiY3JlYXRlRWxlbWVudCIsImlkIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJoZWlnaHQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRIZWlnaHQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJvdmVyZmxvdyIsInNob3BwaW5nQ2FydENvbmVjdGlvbiIsImZldGNoIiwidGhlbiIsInNob3BwaW5nQ2FydEh0bWwiLCJ
1594jYXRjaCIsImVycm9yIiwiY29uc29sZSIsImxvZyIsInJlc3BvbnNlIiwib2siLCJ0ZXh0IiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwicmVqZWN0Iiwic3RhdHVzVGV4dCIsIml0ZW0iLCJlbGVtZW50IiwicmVtb3ZlIiwicmVtb3ZlQXR0cmlidXRlIiwiZWxlbWVudFNob3BwaW5nQ2FydCIsImRhdGFzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQXFCQSxRO0FBQ25CLG9CQUFhQyxHQUFiLEVBQWtCQyxRQUFsQixFQUE0QkMsSUFBNUIsRUFBa0M7QUFBQTs7QUFDaEMsU0FBS0YsR0FBTCxHQUFjRyxPQUFPQyxRQUFQLENBQWdCQyxRQUE5QixVQUEyQ0YsT0FBT0MsUUFBUCxDQUFnQkUsSUFBM0QsR0FBa0VOLEdBQWxFO0FBQ0EsU0FBS08sU0FBTCxHQUFpQk4sUUFBakI7QUFDQSxTQUFLTyxnQkFBTCxHQUF3Qk4sSUFBeEI7QUFDQSxTQUFLTyxpQkFBTCxHQUF5QixvQkFBekI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CLElBQXBCO0FBQ0EsU0FBS0MsSUFBTDtBQUNEOzs7OzJCQUVPO0FBQUE7O0FBQ05DLGVBQVNDLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLFVBQUNDLEtBQUQsRUFBVztBQUM1QyxZQUFNQyxTQUFTRCxNQUFNRSxNQUFyQjtBQUNBLFlBQUlELE9BQU9FLFNBQVAsQ0FBaUJDLFFBQWpCLENBQTBCLE1BQUtYLFNBQS9CLENBQUosRUFBK0M7QUFDN0MsZ0JBQUtZLFdBQUw7QUFDRDs7QUFFRCxZQUFJSixPQUFPRSxTQUFQLENBQWlCQyxRQUFqQixDQUEwQixNQUFLVixnQkFBL0IsS0FDQU8sT0FBT0UsU0FBUCxDQUFpQkMsUUFBakIsQ0FBMEIsTUFBS1QsaUJBQS9CLENBREosRUFDdUQ7QUFDckQsZ0JBQUtXLFVBQUwsQ0FBZ0IsTUFBS1osZ0JBQXJCO0FBQ0Q7QUFDRixPQVZEOztBQVlBSSxlQUFTQyxnQkFBVCxDQUEwQixPQUExQixFQUFtQyxVQUFDQyxLQUFELEVBQVc7QUFDNUMsWUFBSUEsTUFBTU8sR0FBTixLQUFjLFFBQWxCLEVBQTRCO0FBQzFCLGdCQUFLRCxVQUFMLENBQWdCLE1BQUtaLGdCQUFyQjtBQUNEO0FBQ0YsT0FKRDtBQUtEOzs7a0NBRWM7QUFDYixVQUFNYyxjQUFjVixTQUFTVyxhQUFULENBQXVCLE1BQXZCLENBQXBCO0FBQ0EsVUFBSUMsVUFBVSxLQUFkO0FBQ0FBLGdCQUFVWixTQUFTYSxhQUFULENBQXVCRCxPQUF2QixDQUFWO0FBQ0FBLGNBQVFFLEVBQVIsR0FBYSxxQkFBYjtBQUNBRixjQUFRRyxTQUFSLEdBQW9CLEtBQUtuQixnQkFBekI7QUFDQWdCLGNBQVFJLEtBQVIsQ0FBY0MsTUFBZCxHQUEwQmpCLFNBQVNrQixlQUFULENBQXlCQyxZQUF6QixHQUF3QyxHQUFsRTtBQUNBbkIsZUFBU29CLElBQVQsQ0FBY0MsV0FBZCxDQUEwQlQsT0FBMUI7QUFDQUYsa0JBQVlNLEtBQVosQ0FBa0JNLFFBQWxCLEdBQTZCLFFBQTdCOztBQUVBLFdBQUtDLHFCQUFMO0FBQ0Q7Ozs0Q0FFd0I7QUFDdkJDLFlBQU0sS0FBS3BDLEdBQVgsRUFDR3FDLElBREgsQ0FDUSxLQUFLQyxnQkFEYixFQUVHQyxLQUZILENBRVMsVUFBQ0MsS0FBRCxFQUFXO0FBQ2hCQyxnQkFBUUMsR0FBUixDQUFZLCtCQUErQkYsS0FBM0M7QUFDRCxPQUpIO0FBS0Q7OztxQ0FFaUJHLFEsRUFBVTtBQUMxQixVQUFJQSxTQUFTQyxFQUFiLEVBQWlCO0FBQ2ZELGlCQUFTRSxJQUFULEdBQWdCUixJQUFoQixDQUFxQixVQUFDUSxJQUFELEVBQVU7QUFDN0JqQyxtQkFBU29CLElBQVQsQ0FBY2Msa0JBQWQsQ0FBaUMsV0FBakMsRUFBOENELElBQTlDO0FBQ0QsU0FGRDtBQUdELE9BSkQsTUFJTztBQUNMLGVBQU8sc0VBQVFFLE1BQVIsQ0FBZUosU0FBU0ssVUFBeEIsQ0FBUDtBQUNEO0FBQ0Y7OzsrQkFFV0MsSSxFQUFNO0FBQ2hCLFVBQU0zQixjQUFjVixTQUFTVyxhQUFULENBQXVCLE1BQXZCLENBQXBCO0FBQ0EsVUFBTTJCLFVBQVV0QyxTQUFTVyxhQUFULENBQXVCLE1BQU0wQixJQUE3QixDQUFoQjtBQUNBLFdBQUt2QyxZQUFMLEdBQW9CRSxTQUFTVyxhQUFULENBQXVCLG9CQUF2QixDQUFwQjs7QUFFQSxVQUFJMkIsV0FBVyxLQUFLeEMsWUFBcEIsRUFBa0M7QUFDaEN3QyxnQkFBUUMsTUFBUjtBQUNBLGFBQUt6QyxZQUFMLENBQWtCeUMsTUFBbEI7QUFDQTdCLG9CQUFZOEIsZUFBWixDQUE0QixPQUE1QjtBQUNEO0FBQ0Y7Ozs7OztBQXZFa0JyRCx1RTs7O0FBMEVyQmEsU0FBU0MsZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLFlBQU07QUFDbEQsTUFBTXdDLHNCQUFzQnpDLFNBQVNXLGFBQVQsQ0FBdUIsWUFBdkIsRUFBcUMrQixPQUFyQyxDQUE2Q3RELEdBQXpFO0FBQ0EsTUFBSUQsUUFBSixDQUFhc0QsbUJBQWIsRUFBa0MsV0FBbEMsRUFBK0MsbUJBQS9DO0FBQ0QsQ0FIRCIsImZpbGUiOiIyMTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9wcGluZyB7XG4gIGNvbnN0cnVjdG9yICh1cmwsIGVsZW1lbnRvLCB2ZWxvKSB7XG4gICAgdGhpcy51cmwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fSR7dXJsfWBcbiAgICB0aGlzLm15Qm9va2luZyA9IGVsZW1lbnRvXG4gICAgdGhpcy5zaG9wcGluZ0NhcnRWZWxvID0gdmVsb1xuICAgIHRoaXMuc2hvcHBpbmdDYXJ0Q2xvc2UgPSAnY2Fycml0by10b3BfX2Nsb3NlJ1xuICAgIHRoaXMuc2hvcHBpbmdXcmFwID0gbnVsbFxuICAgIHRoaXMuaW5pdCgpXG4gIH1cblxuICBpbml0ICgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ID0gZXZlbnQudGFyZ2V0XG4gICAgICBpZiAoc2VsZWN0LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLm15Qm9va2luZykpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVNb2RhbCgpXG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3QuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc2hvcHBpbmdDYXJ0VmVsbykgfHxcbiAgICAgICAgICBzZWxlY3QuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuc2hvcHBpbmdDYXJ0Q2xvc2UpKSB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNob3BwaW5nQ2FydFZlbG8pXG4gICAgICB9XG4gICAgfSlcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwodGhpcy5zaG9wcGluZ0NhcnRWZWxvKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjcmVhdGVNb2RhbCAoKSB7XG4gICAgY29uc3QgYm9keUdlbmVyaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JylcbiAgICBsZXQgb3ZlcmxheSA9ICdkaXYnXG4gICAgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob3ZlcmxheSlcbiAgICBvdmVybGF5LmlkID0gJ2JjX2NhcnJpdG9fdG9wX3ZlbG8nXG4gICAgb3ZlcmxheS5jbGFzc05hbWUgPSB0aGlzLnNob3BwaW5nQ2FydFZlbG9cbiAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9IGAke2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgKyAzMDB9cHhgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KVxuICAgIGJvZHlHZW5lcmljLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgI
1594HRoaXMuc2hvcHBpbmdDYXJ0Q29uZWN0aW9uKClcbiAgfVxuXG4gIHNob3BwaW5nQ2FydENvbmVjdGlvbiAoKSB7XG4gICAgZmV0Y2godGhpcy51cmwpXG4gICAgICAudGhlbih0aGlzLnNob3BwaW5nQ2FydEh0bWwpXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBtYWtpbmcgdGhlIHJlcXVlc3Q6ICcgKyBlcnJvcilcbiAgICAgIH0pXG4gIH1cblxuICBzaG9wcGluZ0NhcnRIdG1sIChyZXNwb25zZSkge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oKHRleHQpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIHRleHQpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICB9XG4gIH1cblxuICBjbG9zZU1vZGFsIChpdGVtKSB7XG4gICAgY29uc3QgYm9keUdlbmVyaWMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JylcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBpdGVtKVxuICAgIHRoaXMuc2hvcHBpbmdXcmFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNhcnJpdG8tdG9wX193cmFwJylcblxuICAgIGlmIChlbGVtZW50ICYmIHRoaXMuc2hvcHBpbmdXcmFwKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZSgpXG4gICAgICB0aGlzLnNob3BwaW5nV3JhcC5yZW1vdmUoKVxuICAgICAgYm9keUdlbmVyaWMucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpXG4gICAgfVxuICB9XG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRTaG9wcGluZ0NhcnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWlyZXNlcnZhJykuZGF0YXNldC51cmxcbiAgbmV3IFNob3BwaW5nKGVsZW1lbnRTaG9wcGluZ0NhcnQsICdtaXJlc2VydmEnLCAnY2Fycml0by10b3BfX3ZlbG8nKVxufSlcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy91dGlscy9zaG9wcGluZ19jYXJ0X3RvcC5qcyJdLCJzb3VyY2VSb290IjoiIn0= 1595//# sourceURL=webpack-internal:///210 1596`)}])})});var a=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.dropdown=n():g.dropdown=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"e");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})},n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=199)}({199:function(g,n,t){g.exports=t(200)},200:function(module,exports){eval(`var dropdown = document.querySelectorAll('.dropdown'); 1597var dropdownOpen = 'dropdown--open'; 1598 1599var removeClassList = function removeClassList(elementSelect) { 1600 dropdown.forEach(function (element) { 1601 if (element !== elementSelect) element.classList.remove(dropdownOpen); 1602 }); 1603}; 1604 1605document.addEventListener('click', function (event) { 1606 var select = event.target; 1607 var dropdownLink = select.closest('.dropdown__link'); 1608 1609 if (dropdownLink) { 1610 var dropdownContainer = dropdownLink.closest('.dropdown'); 1611 dropdownContainer.classList.toggle(dropdownOpen); 1612 1613 removeClassList(dropdownContainer); 1614 } 1615}); 1616//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3VibW9kdWxlcy9kcm9wZG93bi9hcmEvZGVmYXVsdC5qcz8zZTQ5Il0sIm5hbWVzIjpbImRyb3Bkb3duIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZHJvcGRvd25PcGVuIiwicmVtb3ZlQ2xhc3NMaXN0IiwiZWxlbWVudFNlbGVjdCIsImZvckVhY2giLCJlbGVtZW50IiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VsZWN0IiwidGFyZ2V0IiwiZHJvcGRvd25MaW5rIiwiY2xvc2VzdCIsImRyb3Bkb3duQ29udGFpbmVyIiwidG9nZ2xlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxXQUFXQyxTQUFTQyxnQkFBVCxDQUEwQixXQUExQixDQUFqQjtBQUNBLElBQU1DLGVBQWUsZ0JBQXJCOztBQUVBLElBQU1DLGtCQUFrQixTQUFsQkEsZUFBa0IsQ0FBQ0MsYUFBRCxFQUFtQjtBQUN6Q0wsV0FBU00sT0FBVCxDQUFpQixtQkFBVztBQUMxQixRQUFJQyxZQUFZRixhQUFoQixFQUErQkUsUUFBUUMsU0FBUixDQUFrQkMsTUFBbEIsQ0FBeUJOLFlBQXpCO0FBQ2hDLEdBRkQ7QUFHRCxDQUpEOztBQU1BRixTQUFTUyxnQkFBVCxDQUEwQixPQUExQixFQUFtQyxVQUFDQyxLQUFELEVBQVc7QUFDNUMsTUFBSUMsU0FBU0QsTUFBTUUsTUFBbkI7QUFDQSxNQUFNQyxlQUFlRixPQUFPRyxPQUFQLENBQWUsaUJBQWYsQ0FBckI7O0FBRUEsTUFBSUQsWUFBSixFQUFrQjtBQUNoQixRQUFNRSxvQkFBb0JGLGFBQWFDLE9BQWIsQ0FBcUIsV0FBckIsQ0FBMUI7QUFDQUMsc0JBQWtCUixTQUFsQixDQUE0QlMsTUFBNUIsQ0FBbUNkLFlBQW5DOztBQUVBQyxvQkFBZ0JZLGlCQUFoQjtBQUNEO0FBQ0YsQ0FWRCIsImZpbGUiOiIyMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkcm9wZG93biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kcm9wZG93bicpXG5jb25zdCBkcm9wZG93bk9wZW4gPSAnZHJvcGRvd24tLW9wZW4nXG5cbmNvbnN0IHJlbW92ZUNsYXNzTGlzdCA9IChlbGVtZW50U2VsZWN0KSA9PiB7XG4gIGRyb3Bkb3duLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgaWYgKGVsZW1lbnQgIT09IGVsZW1lbnRTZWxlY3QpIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShkcm9wZG93bk9wZW4pXG4gIH0pXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gIGxldCBzZWxlY3QgPSBldmVudC50YXJnZXRcbiAgY29uc3QgZHJvcGRvd25MaW5rID0gc2VsZWN0LmNsb3Nlc3QoJy5kcm9wZG93bl9fbGluaycpXG5cbiAgaWYgKGRyb3Bkb3duTGluaykge1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gZHJvcGRvd25MaW5rLmNsb3Nlc3QoJy5kcm9wZG93bicpXG4gICAgZHJvcGRvd25Db250YWluZXIuY2xhc3NMaXN0LnRvZ2dsZShkcm9wZG93bk9wZW4pXG5cbiAgICByZW1vdmVDbGFzc0xpc3QoZHJvcGRvd25Db250YWluZXIpXG4gIH1cbn0pXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvc3VibW9kdWxlcy9kcm9wZG93bi9hcmEvZGVmYXVsdC5qcyJdLCJzb3VyY2VSb290IjoiIn0= 1617//# sourceURL=webpack-internal:///200 1618`)}})})});var s=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.lazy=n():g.lazy=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"Q");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})}
1618,n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/juan.vera/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=205)}({205:function(g,n,t){g.exports=t(206)},206:function(module,exports){eval(`var isIntersecting = function isIntersecting(entry) { 1619 return entry.isIntersecting; // true (dentro de la pantalla) 1620}; 1621 1622var loadImage = function loadImage(entry) { 1623 var image = entry.target; 1624 if (image.parentElement.tagName === 'PICTURE') { 1625 var sources = image.parentElement.querySelectorAll('source'); 1626 sources.forEach(function (source) { 1627 source.srcset = source.getAttribute('data-srcset'); 1628 }); 1629 } 1630 image.src = image.dataset.src; 1631 image.classList.remove('lazyestload'); 1632 observer.unobserve(image); // dejar de observar 1633}; 1634 1635var observer = new IntersectionObserver(function (entries) { 1636 entries.filter(isIntersecting).forEach(loadImage); 1637}); 1638 1639var registerImage = function registerImage(img) { 1640 observer.observe(img); 1641}; 1642 1643document.addEventListener('DOMContentLoaded', function () { 1644 var images = document.querySelectorAll('img.lazyestload'); 1645 images.forEach(function (img) { 1646 return registerImage(img); 1647 }); 1648}); 1649//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvbGF6eS5qcz82OTdhIl0sIm5hbWVzIjpbImlzSW50ZXJzZWN0aW5nIiwiZW50cnkiLCJsb2FkSW1hZ2UiLCJpbWFnZSIsInRhcmdldCIsInBhcmVudEVsZW1lbnQiLCJ0YWdOYW1lIiwic291cmNlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwic291cmNlIiwic3Jjc2V0IiwiZ2V0QXR0cmlidXRlIiwic3JjIiwiZGF0YXNldCIsImNsYXNzTGlzdCIsInJlbW92ZSIsIm9ic2VydmVyIiwidW5vYnNlcnZlIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZmlsdGVyIiwicmVnaXN0ZXJJbWFnZSIsImltZyIsIm9ic2VydmUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpbWFnZXMiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLGlCQUFpQixTQUFqQkEsY0FBaUIsQ0FBQ0MsS0FBRCxFQUFXO0FBQ2hDLFNBQU9BLE1BQU1ELGNBQWIsQ0FEZ0MsQ0FDSjtBQUM3QixDQUZEOztBQUlBLElBQU1FLFlBQVksU0FBWkEsU0FBWSxDQUFDRCxLQUFELEVBQVc7QUFDM0IsTUFBTUUsUUFBUUYsTUFBTUcsTUFBcEI7QUFDQSxNQUFJRCxNQUFNRSxhQUFOLENBQW9CQyxPQUFwQixLQUFnQyxTQUFwQyxFQUErQztBQUM3QyxRQUFNQyxVQUFVSixNQUFNRSxhQUFOLENBQW9CRyxnQkFBcEIsQ0FBcUMsUUFBckMsQ0FBaEI7QUFDQUQsWUFBUUUsT0FBUixDQUFnQixrQkFBVTtBQUN4QkMsYUFBT0MsTUFBUCxHQUFnQkQsT0FBT0UsWUFBUCxDQUFvQixhQUFwQixDQUFoQjtBQUNELEtBRkQ7QUFHRDtBQUNEVCxRQUFNVSxHQUFOLEdBQVlWLE1BQU1XLE9BQU4sQ0FBY0QsR0FBMUI7QUFDQVYsUUFBTVksU0FBTixDQUFnQkMsTUFBaEIsQ0FBdUIsYUFBdkI7QUFDQUMsV0FBU0MsU0FBVCxDQUFtQmYsS0FBbkIsRUFWMkIsQ0FVRDtBQUMzQixDQVhEOztBQWFBLElBQU1jLFdBQVcsSUFBSUUsb0JBQUosQ0FBeUIsVUFBQ0MsT0FBRCxFQUFhO0FBQ3JEQSxVQUNHQyxNQURILENBQ1VyQixjQURWLEVBRUdTLE9BRkgsQ0FFV1AsU0FGWDtBQUdELENBSmdCLENBQWpCOztBQU1BLElBQU1vQixnQkFBZ0IsU0FBaEJBLGFBQWdCLENBQUNDLEdBQUQsRUFBUztBQUM3Qk4sV0FBU08sT0FBVCxDQUFpQkQsR0FBakI7QUFDRCxDQUZEOztBQUlBRSxTQUFTQyxnQkFBVCxDQUEwQixrQkFBMUIsRUFBOEMsWUFBTTtBQUNsRCxNQUFNQyxTQUFTRixTQUFTakIsZ0JBQVQsQ0FBMEIsaUJBQTFCLENBQWY7QUFDQW1CLFNBQU9sQixPQUFQLENBQWU7QUFBQSxXQUFPYSxjQUFjQyxHQUFkLENBQVA7QUFBQSxHQUFmO0FBQ0QsQ0FIRCIsImZpbGUiOiIyMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0ludGVyc2VjdGluZyA9IChlbnRyeSkgPT4ge1xuICByZXR1cm4gZW50cnkuaXNJbnRlcnNlY3RpbmcgLy8gdHJ1ZSAoZGVudHJvIGRlIGxhIHBhbnRhbGxhKVxufVxuXG5jb25zdCBsb2FkSW1hZ2UgPSAoZW50cnkpID0+IHtcbiAgY29uc3QgaW1hZ2UgPSBlbnRyeS50YXJnZXRcbiAgaWYgKGltYWdlLnBhcmVudEVsZW1lbnQudGFnTmFtZSA9PT0gJ1BJQ1RVUkUnKSB7XG4gICAgY29uc3Qgc291cmNlcyA9IGltYWdlLnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc291cmNlJylcbiAgICBzb3VyY2VzLmZvckVhY2goc291cmNlID0+IHtcbiAgICAgIHNvdXJjZS5zcmNzZXQgPSBzb3VyY2UuZ2V0QXR0cmlidXRlKCdkYXRhLXNyY3NldCcpXG4gICAgfSlcbiAgfVxuICBpbWFnZS5zcmMgPSBpbWFnZS5kYXRhc2V0LnNyY1xuICBpbWFnZS5jbGFzc0xpc3QucmVtb3ZlKCdsYXp5ZXN0bG9hZCcpXG4gIG9ic2VydmVyLnVub2JzZXJ2ZShpbWFnZSkgLy8gZGVqYXIgZGUgb2JzZXJ2YXJcbn1cblxuY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgZW50cmllc1xuICAgIC5maWx0ZXIoaXNJbnRlcnNlY3RpbmcpXG4gICAgLmZvckVhY2gobG9hZEltYWdlKVxufSlcblxuY29uc3QgcmVnaXN0ZXJJbWFnZSA9IChpbWcpID0+IHtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZShpbWcpXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gIGNvbnN0IGltYWdlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZy5sYXp5ZXN0bG9hZCcpXG4gIGltYWdlcy5mb3JFYWNoKGltZyA9PiByZWdpc3RlckltYWdlKGltZykpXG59KVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3V0aWxzL2xhenkuanMiXSwic291cmNlUm9vdCI6IiJ9 1650//# sourceURL=webpack-internal:///206 1651`)}})})});var d=Z((exports,module)=>{(function(g,n){typeof exports=="object"&&typeof module=="object"?module.exports=n():typeof define=="function"&&define.amd?define([],n):typeof exports=="object"?exports.splide=n():g.splide=n()})(typeof self<"u"?self:exports,function(){return function(g){function n(e){if(t[e])return t[e].exports;var I=t[e]={i:e,l:!1,exports:{}};return g[e].call(I.exports,I,I.exports,n),I.l=!0,I.exports}l(n,"I");var t={};return n.m=g,n.c=t,n.d=function(e,I,B){n.o(e,I)||Object.defineProperty(e,I,{configurable:!1,enumerable:!0,get:B})}
1651,n.n=function(e){var I=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(I,"a",I),I},n.o=function(e,I){return Object.prototype.hasOwnProperty.call(e,I)},n.p="/Users/yulieth.quintero/roi/libs/dynamic_templates/static/js/modules/builds",n(n.s=222)}([function(module,exports){eval(`// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 1652var global = module.exports = typeof window != 'undefined' && window.Math == Math 1653 ? window : typeof self != 'undefined' && self.Math == Math ? self 1654 // eslint-disable-next-line no-new-func 1655 : Function('return this')(); 1656if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef 1657 1658//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcz9lY2FiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ== 1659//# sourceURL=webpack-internal:///0 1660`)},function(module,exports,__webpack_require__){eval(`var store = __webpack_require__(23)('wks'); 1661var uid = __webpack_require__(24); 1662var Symbol = __webpack_require__(0).Symbol; 1663var USE_SYMBOL = typeof Symbol == 'function'; 1664 1665var $exports = module.exports = function (name) { 1666 return store[name] || (store[name] = 1667 USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); 1668}; 1669 1670$exports.store = store; 1671 1672//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy5qcz83NTJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksbUJBQU8sQ0FBQyxFQUFXO0FBQy9CLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1673//# sourceURL=webpack-internal:///1 1674`)},function(module,exports){eval(`var core = module.exports = { version: '2.6.11' }; 1675if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef 1676 1677//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvcmUuanM/MTVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsdUNBQXVDIiwiZmlsZSI6IjIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjExJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1678//# sourceURL=webpack-internal:///2 1679`)},function(module,exports,__webpack_require__){eval(`// Thank's IE8 for his funny defineProperty 1680module.exports = !__webpack_require__(11)(function () { 1681 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; 1682}); 1683 1684//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzP2Y4NGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxFQUFVO0FBQ3BDLGlDQUFpQyxRQUFRLG1CQUFtQixVQUFVLEVBQUUsRUFBRTtBQUM
vendor: 9,082 bytes, lines 1684-1780
1684xRSxDQUFDIiwiZmlsZSI6IjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1685//# sourceURL=webpack-internal:///3 1686`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5); 1687var IE8_DOM_DEFINE = __webpack_require__(26); 1688var toPrimitive = __webpack_require__(27); 1689var dP = Object.defineProperty; 1690 1691exports.f = __webpack_require__(3) ? Object.defineProperty : function defineProperty(O, P, Attributes) { 1692 anObject(O); 1693 P = toPrimitive(P, true); 1694 anObject(Attributes); 1695 if (IE8_DOM_DEFINE) try { 1696 return dP(O, P, Attributes); 1697 } catch (e) { /* empty */ } 1698 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); 1699 if ('value' in Attributes) O[P] = Attributes.value; 1700 return O; 1701}; 1702 1703//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcz83YWYwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLHFCQUFxQixtQkFBTyxDQUFDLEVBQW1CO0FBQ2hELGtCQUFrQixtQkFBTyxDQUFDLEVBQWlCO0FBQzNDOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxDQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxZQUFZO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1704//# sourceURL=webpack-internal:///4 1705`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7); 1706module.exports = function (it) { 1707 if (!isObject(it)) throw TypeError(it + ' is not an object!'); 1708 return it; 1709}; 1710 1711//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcz9lZmIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1712//# sourceURL=webpack-internal:///5 1713`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4); 1714var createDesc = __webpack_require__(12); 1715module.exports = __webpack_require__(3) ? function (object, key, value) { 1716 return dP.f(object, key, createDesc(1, value)); 1717} : function (object, key, value) { 1718 object[key] = value; 1719 return object; 1720}; 1721 1722//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanM/ODQ5YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyxFQUFrQjtBQUMzQyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFnQjtBQUN6QztBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EiLCJmaWxlIjoiNi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1723//# sourceURL=webpack-internal:///6 1724`)},function(module,exports){eval(`module.exports = function (it) { 1725 return typeof it === 'object' ? it !== null : typeof it === 'function'; 1726}; 1727 1728//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcz8xMmE4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSIsImZpbGUiOiI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1729//# sourceURL=webpack-internal:///7 1730`)},function(module,exports){eval(`var hasOwnProperty = {}.hasOwnProperty; 1731module.exports = function (it, key) { 1732 return hasOwnProperty.call(it, key); 1733}; 1734 1735//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcz8wZjYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EiLCJmaWxlIjoiOC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1736//# sourceURL=webpack-internal:///8 1737`)},function(module,exports,__webpack_require__){eval(`var global = __webpack_require__(0); 1738var core = __webpack_require__(2); 1739var ctx = __webpack_require__(13); 1740var hide = __webpack_require__(6); 1741var has = __webpack_require__(8); 1742var PROTOTYPE = 'prototype'; 1743 1744var $export = function (type, name, source) { 1745 var IS_FORCED = type & $export.F; 1746 var IS_GLOBAL = type & $export.G; 1747 var IS_STATIC = type & $export.S; 1748 var IS_PROTO = type & $export.P; 1749 var IS_BIND = type & $export.B; 1750 var IS_WRAP = type & $export.W; 1751 var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); 1752 var expProto = exports[PROTOTYPE]; 1753 var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; 1754 var key, own, out; 1755 if (IS_GLOBAL) source = name; 1756 for (key in source) { 1757 // contains in native 1758 own = !IS_FORCED && target && target[key] !== undefined; 1759 if (own && has(exports, key)) continue; 1760 // export native or passed 1761 out = own ? target[key] : source[key]; 1762 // prevent global pollution for namespaces 1763 exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] 1764 // bind timers to global for call from export context 1765 : IS_BIND && own ? ctx(out, global) 1766 // wrap global constructors for prevent change them in library 1767 : IS_WRAP && target[key] == out ? (function (C) { 1768 var F = function (a, b, c) { 1769 if (this instanceof C) { 1770 switch (arguments.length) { 1771 case 0: return new C(); 1772 case 1: return new C(a); 1773 case 2: return new C(a, b); 1774 } return new C(a, b, c); 1775 } return C.apply(this, arguments); 1776 }; 1777 F[PROTOTYPE] = C[PROTOTYPE]; 1778 return F; 1779 // make static versions for prototype methods 1780 }
1780)(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; 1781 // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% 1782 if (IS_PROTO) { 1783 (exports.virtual || (exports.virtual = {}))[key] = out; 1784 // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% 1785 if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); 1786 } 1787 } 1788}; 1789// type bitmap 1790$export.F = 1; // forced 1791$export.G = 2; // global 1792$export.S = 4; // static 1793$export.P = 8; // proto 1794$export.B = 16; // bind 1795$export.W = 32; // wrap 1796$export.U = 64; // safe 1797$export.R = 128; // real proto method for \`library\` 1798module.exports = $export; 1799 1800//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2V4cG9ydC5qcz85MGNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0ZBQWtGO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGdCQUFnQjtBQUNoQiIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcm
1800UgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbiAodHlwZSwgbmFtZSwgc291cmNlKSB7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GO1xuICB2YXIgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuRztcbiAgdmFyIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlM7XG4gIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7XG4gIHZhciBJU19CSU5EID0gdHlwZSAmICRleHBvcnQuQjtcbiAgdmFyIElTX1dSQVAgPSB0eXBlICYgJGV4cG9ydC5XO1xuICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuICB2YXIgZXhwUHJvdG8gPSBleHBvcnRzW1BST1RPVFlQRV07XG4gIHZhciB0YXJnZXQgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdO1xuICB2YXIga2V5LCBvd24sIG91dDtcbiAgaWYgKElTX0dMT0JBTCkgc291cmNlID0gbmFtZTtcbiAgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAob3duICYmIGhhcyhleHBvcnRzLCBrZXkpKSBjb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uIChDKSB7XG4gICAgICB2Y
1800XIgRiA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykge1xuICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEMoKTtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEMoYSwgYik7XG4gICAgICAgICAgfSByZXR1cm4gbmV3IEMoYSwgYiwgYyk7XG4gICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgICBGW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG4gICAgICByZXR1cm4gRjtcbiAgICAvLyBtYWtlIHN0YXRpYyB2ZXJzaW9ucyBmb3IgcHJvdG90eXBlIG1ldGhvZHNcbiAgICB9KShvdXQpIDogSVNfUFJPVE8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG4gICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlXG4gICAgaWYgKElTX1BST1RPKSB7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYgKHR5cGUgJiAkZXhwb3J0LlIgJiYgZXhwUHJvdG8gJiYgIWV4cFByb3RvW2tleV0pIGhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyJdLCJzb3VyY2VSb290IjoiIn0= 1801//# sourceURL=webpack-internal:///9 1802`)},function(module,exports){eval(`module.exports = {}; 1803 1804//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcz9mZGI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyYXRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1805//# sourceURL=webpack-internal:///10 1806`)},function(module,exports){eval(`module.exports = function (exec) { 1807 try { 1808 return !!exec(); 1809 } catch (e) { 1810 return true; 1811 } 1812}; 1813 1814//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ZhaWxzLmpzPzRiY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIxMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ== 1815//# sourceURL=webpack-internal:///11 1816`)},function(module,exports){eval(`module.exports = function (bitmap, value) { 1817 return { 1818 enumerable: !(bitmap & 1), 1819 configurable: !(bitmap & 2), 1820 writable: !(bitmap & 4), 1821 value: value 1822 }; 1823}; 1824 1825//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanM/NWZjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1826//# sourceURL=webpack-internal:///12 1827`)},function(module,exports,__webpack_require__){eval(`// optional / simple c
1827ontext binding 1828var aFunction = __webpack_require__(19); 1829module.exports = function (fn, that, length) { 1830 aFunction(fn); 1831 if (that === undefined) return fn; 1832 switch (length) { 1833 case 1: return function (a) { 1834 return fn.call(that, a); 1835 }; 1836 case 2: return function (a, b) { 1837 return fn.call(that, a, b); 1838 }; 1839 case 3: return function (a, b, c) { 1840 return fn.call(that, a, b, c); 1841 }; 1842 } 1843 return function (/* ...args */) { 1844 return fn.apply(that, arguments); 1845 }; 1846}; 1847 1848//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcz9mOTkzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1849//# sourceURL=webpack-internal:///13 1850`)},function(module,exports,__webpack_require__){eval(`var isObject = __webpack_require__(7); 1851var document = __webpack_require__(0).document; 1852// typeof document.createElement is 'object' in old IE 1853var is = isObject(document) && isObject(document.createElement); 1854module.exports = function (it) { 1855 return is ? document.createElement(it) : {}; 1856}; 1857 1858//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanM/MzhkZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIl0sInNvdXJjZVJvb3QiOiIifQ== 1859//# sourceURL=webpack-internal:///14 1860`)},function(module,exports){eval(`// 7.2.1 RequireObjectCoercible(argument) 1861module.exports = function (it) { 1862 if (it == undefined) throw TypeError("Can't call method on " + it); 1863 return it; 1864}; 1865 1866//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanM/ZTc2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1867//# sourceURL=webpack-internal:///15 1868`)},function(module,exports){eval(`// 7.1.4 ToInteger
1869var ceil = Math.ceil; 1870var floor = Math.floor; 1871module.exports = function (it) { 1872 return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); 1873}; 1874 1875//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanM/NTJlMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1876//# sourceURL=webpack-internal:///16 1877`)},function(module,exports,__webpack_require__){eval(`var shared = __webpack_require__(23)('keys'); 1878var uid = __webpack_require__(24); 1879module.exports = function (key) {
1880 return shared[key] || (shared[key] = uid(key)); 1881}; 1882 1883//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanM/NmIxZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhLG1CQUFPLENBQUMsRUFBVztBQUNoQyxVQUFVLG1CQUFPLENBQUMsRUFBUTtBQUMxQjtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSAxN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1884//# sourceURL=webpack-internal:///17 1885`)},function(module,exports,__webpack_require__){eval(`// to indexed object, toObject with fallback for non-array-like ES3 strings 1886var IObject = __webpack_require__(36); 1887var defined = __webpack_require__(15); 1888module.exports = function (it) { 1889 return IObject(defined(it)); 1890}; 1891 1892//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanM/NGRjNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxFQUFZO0FBQ2xDO0FBQ0E7QUFDQSIsImZpbGUiOiIxO
1892C5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 1893//# sourceURL=webpack-internal:///18 1894`)},function(module,exports){eval(`module.exports = function (it) { 1895 if (typeof it != 'function') throw TypeError(it + ' is not a function!'); 1896 return it; 1897}; 1898 1899//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanM/OTRlOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1900//# sourceURL=webpack-internal:///19 1901`)},function(module,exports){eval(`var toString = {}.toString; 1902 1903module.exports = function (it) { 1904 return toString.call(it).slice(8, -1); 1905}; 1906 1907//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qcz80N2QzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6IjIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 1908//# sourceURL=webpack-internal:///20 1909`)},function(module,exports){eval(`module.exports = true; 1910 1911//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanM/M2I4OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIyMS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1912//# sourceURL=webpack-internal:///21 1913`)},function(module,exports,__webpack_require__){eval(`var def = __webpack_require__(4).f; 1914var has = __webpack_require__(8); 1915var TAG = __webpack_require__(1)('toStringTag'); 1916 1917module.exports = function (it, tag, stat) { 1918 if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); 1919}; 1920 1921//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzPzdiYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQWM7QUFDaEMsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsVUFBVSxtQkFBTyxDQUFDLENBQVE7O0FBRTFCO0FBQ0Esb0VBQW9FLGlDQUFpQztBQUNyRyIsImZpbGUiOiIyMi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 6,621 bytes, lines 1921-1972
1921IDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 1922//# sourceURL=webpack-internal:///22 1923`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2); 1924var global = __webpack_require__(0); 1925var SHARED = '__core-js_shared__'; 1926var store = global[SHARED] || (global[SHARED] = {}); 1927 1928(module.exports = function (key, value) { 1929 return store[key] || (store[key] = value !== undefined ? value : {}); 1930})('versions', []).push({ 1931 version: core.version, 1932 mode: __webpack_require__(21) ? 'pure' : 'global', 1933 copyright: '\xA9 2019 Denis Pushkarev (zloirock.ru)' 1934}); 1935 1936//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcz83YmMwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxDQUFTO0FBQzVCLGFBQWEsbUJBQU8sQ0FBQyxDQUFXO0FBQ2hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQSxRQUFRLG1CQUFPLENBQUMsRUFBWTtBQUM1QjtBQUNBLENBQUMiLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 1937//# sourceURL=webpack-internal:///23 1938`)},function(module,exports){eval(`var id = 0; 1939var px = Math.random(); 1940module.exports = function (key) { 1941 return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); 1942}; 1943 1944//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcz9kYzRhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanNcbi8vIG1vZHVsZSBpZCA9IDI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 1945//# sourceURL=webpack-internal:///24 1946`)},function(module,exports){eval(`// IE 8- don't enum bug keys 1947module.exports = ( 1948 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' 1949).split(','); 1950 1951//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanM/YzY3NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 1952//# sourceURL=webpack-internal:///25 1953`)},function(module,exports,__webpack_require__){eval(`module.exports = !__webpack_require__(3) && !__webpack_require__(11)(function () { 1954 return Object.defineProperty(__webpack_require__(14)('div'), 'a', { get: function () { return 7; } }).a != 7; 1955}); 1956 1957//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzPzQ5ZjAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLG1CQUFPLENBQUMsQ0FBZ0IsTUFBTSxtQkFBTyxDQUFDLEVBQVU7QUFDbEUsK0JBQStCLG1CQUFPLENBQUMsRUFBZSxnQkFBZ0IsbUJBQW1CLFVBQVUsRUFBRSxFQUFFO0FBQ3ZHLENBQUMiLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1958//# sourceURL=webpack-internal:///26 1959`)},function(module,exports,__webpack_require__){eval(`// 7.1.1 ToPrimitive(input [, PreferredType]) 1960var isObject = __webpack_require__(7); 1961// instead of the ES6 spec version, we didn't implement @@toPrimitive case 1962// and the second argument - flag - preferred type is a string 1963module.exports = function (it, S) { 1964 if (!isObject(it)) return it; 1965 var fn, val; 1966 if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; 1967 if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; 1968 if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; 1969 throw TypeError("Can't convert object to primitive value"); 1970}; 1971 1972//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcz8zMjYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLENBQWM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eX
vendor: 10,430 bytes, lines 1972-2081
1972BlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzXG4vLyBtb2R1bGUgaWQgPSAyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMiXSwic291cmNlUm9vdCI6IiJ9 1973//# sourceURL=webpack-internal:///27 1974`)},function(module,exports,__webpack_require__){eval(`// 7.1.15 ToLength 1975var toInteger = __webpack_require__(16); 1976var min = Math.min; 1977module.exports = function (it) { 1978 return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 1979}; 1980 1981//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcz80MTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzXG4vLyBtb2R1bGUgaWQgPSAyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1982//# sourceURL=webpack-internal:///28 1983`)},function(module,exports,__webpack_require__){eval(`// 7.1.13 ToObject(argument) 1984var defined = __webpack_require__(15); 1985module.exports = function (it) { 1986 return Object(defined(it)); 1987}; 1988 1989//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qcz9iMDFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 1990//# sourceURL=webpack-internal:///29 1991`)},,function(module,exports,__webpack_require__){"use strict";eval(` 1992var $at = __webpack_require__(51)(true); 1993 1994// 21.1.3.27 String.prototype[@@iterator]() 1995__webpack_require__(32)(String, 'String', function (iterated) { 1996 this._t = String(iterated); // target 1997 this._i = 0; // next index 1998// 21.1.5.2.1 %StringIteratorPrototype%.next() 1999}, function () { 2000 var O = this._t; 2001 var index = this._i; 2002 var point; 2003 if (index >= O.length) return { value: undefined, done: true }; 2004 point = $at(O, index); 2005 this._i += point.length; 2006 return { value: point, done: false }; 2007}); 2008 2009//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcz9jZDA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsVUFBVSxtQkFBTyxDQUFDLEVBQWM7O0FBRWhDO0FBQ0EsbUJBQU8sQ0FBQyxFQUFnQjtBQUN4Qiw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUMiLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 2010//# sourceURL=webpack-internal:///31 2011`)},function(module,exports,__webpack_require__){"use strict";eval(` 2012var LIBRARY = __webpack_require__(21); 2013var $export = __webpack_require__(9); 2014var redefine = __webpack_require__(46); 2015var hide = __webpack_require__(6); 2016var Iterators = __webpack_require__(10); 2017var $iterCreate = __webpack_require__(47); 2018var setToStringTag = __webpack_require__(22); 2019var getPrototypeOf = __webpack_require__(50); 2020var ITERATOR = __webpack_require__(1)('iterator'); 2021var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o \`next\` 2022var FF_ITERATOR = '@@iterator'; 2023var KEYS = 'keys'; 2024var VALUES = 'values'; 2025 2026var returnThis = function () { return this; }; 2027 2028module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { 2029 $iterCreate(Constructor, NAME, next); 2030 var getMethod = function (kind) { 2031 if (!BUGGY && kind in proto) return proto[kind]; 2032 switch (kind) { 2033 case KEYS: return function keys() { return new Constructor(this, kind); }; 2034 case VALUES: return function values() { return new Constructor(this, kind); }; 2035 } return function entries() { return new Constructor(this, kind); }; 2036 }; 2037 var TAG = NAME + ' Iterator'; 2038 var DEF_VALUES = DEFAULT == VALUES; 2039 var VALUES_BUG = false; 2040 var proto = Base.prototype; 2041 var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; 2042 var $default = $native || getMethod(DEFAULT); 2043 var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; 2044 var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; 2045 var methods, key, IteratorPrototype; 2046 // Fix native 2047 if ($anyNative) { 2048 IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); 2049 if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { 2050 // Set @@toStringTag to native iterators 2051 setToStringTag(IteratorPrototype, TAG, true); 2052 // fix for some old engines 2053 if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); 2054 } 2055 } 2056 // fix Array#{values, @@iterator}.name in V8 / FF 2057 if (DEF_VALUES && $native && $native.name !== VALUES) { 2058 VALUES_BUG = true; 2059 $default = function values() { return $native.call(this); }; 2060 } 2061 // Define iterator 2062 if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { 2063 hide(proto, ITERATOR, $default); 2064 } 2065 // Plug for library 2066 Iterators[NAME] = $default; 2067 Iterators[TAG] = returnThis; 2068 if (DEFAULT) { 2069 methods = { 2070 values: DEF_VALUES ? $default : getMethod(VALUES), 2071 keys: IS_SET ? $default : getMethod(KEYS), 2072 entries: $entries 2073 }; 2074 if (FORCED) for (key in methods) { 2075 if (!(key in proto)) redefine(proto, key, methods[key]); 2076 } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); 2077 } 2078 return methods; 2079}; 2080 2081//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzP2JjODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixjQUFjLG1CQUFPLENBQUMsRUFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMsQ0FBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMsRUFBYTtBQUNwQyxXQUFXLG1CQUFPLENBQUMsQ0FBUztBQUM1QixnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWdCO0FBQzFDLHFCQUFxQixtQkFBTyxDQUFDLEVBQXNCO0FBQ25ELHFCQUFxQixtQkFBTyxDQUFDLEVBQWU7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsYUFBYTs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvQ0FBb0M7QUFDN0UsNkNBQTZDLG9DQUFvQztBQUNqRixLQUFLLDRCQUE0QixvQ0FBb0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQkFBbUI7QUFDbkM7QUFDQTtBQUNBLGtDQUFrQywyQkFBMkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybi
vendor: 8,998 bytes, lines 2081-2137
2081BmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2082//# sourceURL=webpack-internal:///32 2083`)},function(module,exports,__webpack_require__){eval(`// getting tag from 19.1.3.6 Object.prototype.toString() 2084var cof = __webpack_require__(20); 2085var TAG = __webpack_require__(1)('toStringTag'); 2086// ES3 wrong here 2087var ARG = cof(function () { return arguments; }()) == 'Arguments'; 2088 2089// fallback for IE11 Script Access Denied error 2090var tryGet = function (it, key) { 2091 try { 2092 return it[key]; 2093 } catch (e) { /* empty */ } 2094}; 2095 2096module.exports = function (it) { 2097 var O, T, B; 2098 return it === undefined ? 'Undefined' : it === null ? 'Null' 2099 // @@toStringTag case 2100 : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T 2101 // builtinTag case 2102 : ARG ? cof(O) 2103 // ES3 arguments fallback 2104 : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; 2105}; 2106 2107//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanM/NDU4ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCO0FBQ0EsMkJBQTJCLGtCQUFrQixFQUFFOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsWUFBWTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanNcbi8vIG1vZHVsZSBpZCA9IDMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 2108//# sourceURL=webpack-internal:///33 2109`)},,,function(module,exports,__webpack_require__){eval(`// fallback for non-array-like ES3 and non-enumerable old V8 strings 2110var cof = __webpack_require__(20); 2111// eslint-disable-next-line no-prototype-builtins 2112module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { 2113 return cof(it) == 'String' ? it.split('') : Object(it); 2114}; 2115 2116//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanM/MzE0ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxFQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 2117//# sourceURL=webpack-internal:///36 2118`)},function(module,exports,__webpack_require__){eval(`var classof = __webpack_require__(33); 2119var ITERATOR = __webpack_require__(1)('iterator'); 2120var Iterators = __webpack_require__(10); 2121module.exports = __webpack_require__(2).getIteratorMethod = function (it) { 2122 if (it != undefined) return it[ITERATOR] 2123 || it['@@iterator'] 2124 || Iterators[classof(it)]; 2125}; 2126 2127//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzP2RkZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLENBQVE7QUFDL0IsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQyxDQUFTO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjM3LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 2128//# sourceURL=webpack-internal:///37 2129`)},,,,function(module,exports,__webpack_require__){eval(`// 19.1.2.14 / 15.2.3.14 Object.keys(O) 2130var $keys = __webpack_require__(43); 2131var enumBugKeys = __webpack_require__(25); 2132 2133module.exports = Object.keys || function keys(O) { 2134 return $keys(O, enumBugKeys); 2135}; 2136 2137//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzPzk2NGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxZQUFZLG1CQUFPLENBQUMsRUFBeUI7QUFDN0Msa0JBQWtCLG1CQUFPLENBQUMsRUFB
2137a0I7O0FBRTVDO0FBQ0E7QUFDQSIsImZpbGUiOiI0MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanNcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2138//# sourceURL=webpack-internal:///41 2139`)},function(module,exports,__webpack_require__){eval(`var document = __webpack_require__(0).document; 2140module.exports = document && document.documentElement; 2141 2142//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanM/NDRmMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBVztBQUNsQyIsImZpbGUiOiI0Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2143//# sourceURL=webpack-internal:///42 2144`)},function(module,exports,__webpack_require__){eval(`var has = __webpack_require__(8); 2145var toIObject = __webpack_require__(18); 2146var arrayIndexOf = __webpack_require__(44)(false); 2147var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 2148 2149module.exports = function (object, names) { 2150 var O = toIObject(object); 2151 var i = 0; 2152 var result = []; 2153 var key; 2154 for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); 2155 // Don't enum bug & hidden keys 2156 while (names.length > i) if (has(O, key = names[i++])) { 2157 ~arrayIndexOf(result, key) || result.push(key); 2158 } 2159 return result; 2160}; 2161 2162//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzPzIxYjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLENBQVE7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QyxtQkFBbUIsbUJBQU8sQ0FBQyxFQUFtQjtBQUM5QyxlQUFlLG1CQUFPLENBQUMsRUFBZTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2163//# sourceURL=webpack-internal:///43 2164`)},function(module,exports,__webpack_require__){eval(`// false -> Array#indexOf 2165// true -> Array#includes 2166var toIObject = __webpack_require__(18); 2167var toLength = __webpack_require__(28); 2168var toAbsoluteIndex = __webpack_require__(45); 2169module.exports = function (IS_INCLUDES) { 2170 return function ($this, el, fromIndex) { 2171 var O = toIObject($this); 2172 var length = toLength(O.length); 2173 var index = toAbsoluteIndex(fromIndex, length); 2174 var value; 2175 // Array#includes uses SameValueZero equality algorithm 2176 // eslint-disable-next-line no-self-compare
2177 if (IS_INCLUDES && el != el) while (length > index) { 2178 value = O[index++]; 2179 // eslint-disable-next-line no-self-compare 2180 if (value != value) return true; 2181 // Array#indexOf ignores holes, Array#includes - not 2182 } else for (;length > index; index++) if (IS_INCLUDES || index in O) { 2183 if (O[index] === el) return IS_INCLUDES || index || 0; 2184 } return !IS_INCLUDES && -1; 2185 }; 2186}; 2187 2188//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzP2JjNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLEVBQWM7QUFDckMsc0JBQXNCLG1CQUFPLENBQUMsRUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFlBQVksZUFBZTtBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBIiwiZmlsZSI6IjQ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanNcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2189//# sourceURL=webpack-internal:///44 2190`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16); 2191var max = Math.max; 2192var min = Math.min; 2193module.exports = function (index, length) { 2194 index = toInteger(index); 2195 return index < 0 ? max(index + length, 0) : min(index, length); 2196}; 2197 2198//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzPzdlNDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2199//# sourceURL=webpack-internal:///45 2200`)},function(module,exports,__webpack_require__){eval(`module.exports = __webpack_require__(6); 2201 2202//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzP2YzY2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUyIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDEx
vendor: 4,313 bytes, lines 2202-2262
2202IDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2203//# sourceURL=webpack-internal:///46 2204`)},function(module,exports,__webpack_require__){"use strict";eval(` 2205var create = __webpack_require__(48); 2206var descriptor = __webpack_require__(12); 2207var setToStringTag = __webpack_require__(22); 2208var IteratorPrototype = {}; 2209 2210// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() 2211__webpack_require__(6)(IteratorPrototype, __webpack_require__(1)('iterator'), function () { return this; }); 2212 2213module.exports = function (Constructor, NAME, next) { 2214 Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); 2215 setToStringTag(Constructor, NAME + ' Iterator'); 2216}; 2217 2218//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzP2Y3ODUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYixhQUFhLG1CQUFPLENBQUMsRUFBa0I7QUFDdkMsaUJBQWlCLG1CQUFPLENBQUMsRUFBa0I7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsRUFBc0I7QUFDbkQ7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLENBQVMscUJBQXFCLG1CQUFPLENBQUMsQ0FBUSw0QkFBNEIsYUFBYSxFQUFFOztBQUVqRztBQUNBLHFEQUFxRCw0QkFBNEI7QUFDakY7QUFDQSIsImZpbGUiOiI0Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2219//# sourceURL=webpack-internal:///47 2220`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) 2221var anObject = __webpack_require__(5); 2222var dPs = __webpack_require__(49); 2223var enumBugKeys = __webpack_require__(25); 2224var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 2225var Empty = function () { /* empty */ }; 2226var PROTOTYPE = 'prototype'; 2227 2228// Create object with fake \`null\` prototype: use iframe Object with cleared prototype 2229var createDict = function () { 2230 // Thrash, waste and sodomy: IE GC bug 2231 var iframe = __webpack_require__(14)('iframe'); 2232 var i = enumBugKeys.length; 2233 var lt = '<'; 2234 var gt = '>'; 2235 var iframeDocument; 2236 iframe.style.display = 'none'; 2237 __webpack_require__(42).appendChild(iframe); 2238 iframe.src = 'javascript:'; // eslint-disable-line no-script-url 2239 // createDict = iframe.contentWindow.Object; 2240 // html.removeChild(iframe); 2241 iframeDocument = iframe.contentWindow.document; 2242 iframeDocument.open(); 2243 iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); 2244 iframeDocument.close(); 2245 createDict = iframeDocument.F; 2246 while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; 2247 return createDict(); 2248}; 2249 2250module.exports = Object.create || function create(O, Properties) { 2251 var result; 2252 if (O !== null) { 2253 Empty[PROTOTYPE] = anObject(O); 2254 result = new Empty(); 2255 Empty[PROTOTYPE] = null; 2256 // add "__proto__" for Object.getPrototypeOf polyfill 2257 result[IE_PROTO] = O; 2258 } else result = createDict(); 2259 return Properties === undefined ? result : dPs(result, Properties); 2260}; 2261 2262//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanM/NjI4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxDQUFjO0FBQ3JDLFVBQVUsbUJBQU8sQ0FBQyxFQUFlO0FBQ2pDLGtCQUFrQixtQkFBTyxDQUFDLEVBQWtCO0FBQzVDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsRUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtQkFBTyxDQUFDLEVBQVM7QU
2262FDbkIsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiI0OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2263//# sourceURL=webpack-internal:///48 2264`)},function(module,exports,__webpack_require__){eval(`var dP = __webpack_require__(4); 2265var anObject = __webpack_require__(5); 2266var getKeys = __webpack_require__(41); 2267 2268module.exports = __webpack_require__(3) ? Object.defineProperties : function defineProperties(O, Properties) { 2269 anObject(O); 2270 var keys = getKeys(Properties); 2271 var length = keys.length; 2272 var i = 0; 2273 var P; 2274 while (length > i) dP.f(O, P = keys[i++], Properties[P]); 2275 return O; 2276}; 2277 2278//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanM/YWEyYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsQ0FBYztBQUMvQixlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxjQUFjLG1CQUFPLENBQUMsRUFBZ0I7O0FBRXRDLGlCQUFpQixtQkFBTyxDQUFDLENBQWdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gN
2278Dlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxNCAxNSAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2279//# sourceURL=webpack-internal:///49 2280`)},function(module,exports,__webpack_require__){eval(`// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) 2281var has = __webpack_require__(8); 2282var toObject = __webpack_require__(29); 2283var IE_PROTO = __webpack_require__(17)('IE_PROTO'); 2284var ObjectProto = Object.prototype; 2285 2286module.exports = Object.getPrototypeOf || function (O) { 2287 O = toObject(O); 2288 if (has(O, IE_PROTO)) return O[IE_PROTO]; 2289 if (typeof O.constructor == 'function' && O instanceof O.constructor) { 2290 return O.constructor.prototype; 2291 } return O instanceof Object ? ObjectProto : null; 2292}; 2293 2294//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanM/M2YzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyxFQUFjO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxFQUFlO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDE0IDE1IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2295//# sourceURL=webpack-internal:///50 2296`)},function(module,exports,__webpack_require__){eval(`var toInteger = __webpack_require__(16); 2297var defined = __webpack_require__(15); 2298// true -> String#at 2299// false -> String#codePointAt 2300module.exports = function (TO_STRING) { 2301 return function (that, pos) { 2302 var s = String(defined(that)); 2303 var i = toInteger(pos); 2304 var l = s.length; 2305 var a, b; 2306 if (i < 0 || i >= l) return TO_STRING ? '' : undefined; 2307 a = s.charCodeAt(i); 2308 return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff 2309 ? TO_STRING ? s.charAt(i) : a 2310 : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; 2311 }; 2312}; 2313 2314//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcz84N2FlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLEVBQVk7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanNcbi8vIG1vZHVsZSBpZCA9IDUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTQgMTUgMTYiXSwic291cmNlUm9vdCI6IiJ9 2315//# sourceURL=webpack-internal:///51 2316`)},,,,function(module,exports){eval(`var g;\r 2317\r 2318// This works in non-strict mode\r 2319g = (function() {\r 2320 return this;\r 2321})();\r 2322\r 2323try {\r 2324 // This works if eval is allowed (see CSP)\r 2325 g = g || Function("return this")() || (1,eval)("this");\r 2326} catch(e) {\r 2327 // This works if the window reference is available\r 2328 if(typeof window === "object")\r 2329 g = window;\r 2330}\r 2331\r 2332// g can still be undefined, but nothing to do about it...\r 2333// We return undefined, instead of nothing here, so it's\r 2334// easier to handle this case. if(!global) { ...}\r 2335\r 2336module.exports = g;\r 2337 2338//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzPzM2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QU
2338FFRDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUMiLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcclxuXHJcbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXHJcbmcgPSAoZnVuY3Rpb24oKSB7XHJcblx0cmV0dXJuIHRoaXM7XHJcbn0pKCk7XHJcblxyXG50cnkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxyXG5cdGcgPSBnIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKSB8fCAoMSxldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2goZSkge1xyXG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXHJcblx0aWYodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcclxuXHRcdGcgPSB3aW5kb3c7XHJcbn1cclxuXHJcbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cclxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3NcclxuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBnO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDU1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA1IDEzIDI1Il0sInNvdXJjZVJvb3QiOiIifQ== 2339//# sourceURL=webpack-internal:///55 2340`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(64); 2341var global = __webpack_require__(0); 2342var hide = __webpack_require__(6); 2343var Iterators = __webpack_require__(10); 2344var TO_STRING_TAG = __webpack_require__(1)('toStringTag'); 2345 2346var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 2347 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + 2348 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + 2349 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + 2350 'TextTrackList,TouchList').split(','); 2351 2352for (var i = 0; i < DOMIterables.length; i++) { 2353 var NAME = DOMIterables[i]; 2354 var Collection = global[NAME]; 2355 var proto = Collection && Collection.prototype; 2356 if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); 2357 Iterators[NAME] = Iterators.Array; 2358} 2359 2360//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcz9mYWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBc0I7QUFDOUIsYUFBYSxtQkFBTyxDQUFDLENBQVc7QUFDaEMsV0FBVyxtQkFBTyxDQUFDLENBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsRUFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxDQUFROztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzXG4vLyBtb2R1bGUgaWQgPSA1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2361//# sourceURL=webpack-internal:///57 2362`)},,,,function(module,exports){eval(`
vendor: 5,419 bytes, lines 2362-2546
2362// shim for using process in browser 2363var process = module.exports = {}; 2364 2365// cached from whatever global is present so that test runners that stub it 2366// don't break things. But we need to wrap it in a try catch in case it is 2367// wrapped in strict mode code which doesn't define any globals. It's inside a 2368// function because try/catches deoptimize in certain engines. 2369 2370var cachedSetTimeout; 2371var cachedClearTimeout; 2372 2373function defaultSetTimout() { 2374 throw new Error('setTimeout has not been defined'); 2375} 2376function defaultClearTimeout () { 2377 throw new Error('clearTimeout has not been defined'); 2378} 2379(function () { 2380 try { 2381 if (typeof setTimeout === 'function') { 2382 cachedSetTimeout = setTimeout; 2383 } else { 2384 cachedSetTimeout = defaultSetTimout; 2385 } 2386 } catch (e) { 2387 cachedSetTimeout = defaultSetTimout; 2388 } 2389 try { 2390 if (typeof clearTimeout === 'function') { 2391 cachedClearTimeout = clearTimeout; 2392 } else { 2393 cachedClearTimeout = defaultClearTimeout; 2394 } 2395 } catch (e) { 2396 cachedClearTimeout = defaultClearTimeout; 2397 } 2398} ()) 2399function runTimeout(fun) { 2400 if (cachedSetTimeout === setTimeout) { 2401 //normal enviroments in sane situations 2402 return setTimeout(fun, 0); 2403 } 2404 // if setTimeout wasn't available but was latter defined 2405 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 2406 cachedSetTimeout = setTimeout; 2407 return setTimeout(fun, 0); 2408 } 2409 try { 2410 // when when somebody has screwed with setTimeout but no I.E. maddness 2411 return cachedSetTimeout(fun, 0); 2412 } catch(e){ 2413 try { 2414 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 2415 return cachedSetTimeout.call(null, fun, 0); 2416 } catch(e){ 2417 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error 2418 return cachedSetTimeout.call(this, fun, 0); 2419 } 2420 } 2421 2422 2423} 2424function runClearTimeout(marker) { 2425 if (cachedClearTimeout === clearTimeout) { 2426 //normal enviroments in sane situations 2427 return clearTimeout(marker); 2428 } 2429 // if clearTimeout wasn't available but was latter defined 2430 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 2431 cachedClearTimeout = clearTimeout; 2432 return clearTimeout(marker); 2433 } 2434 try { 2435 // when when somebody has screwed with setTimeout but no I.E. maddness 2436 return cachedClearTimeout(marker); 2437 } catch (e){ 2438 try { 2439 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 2440 return cachedClearTimeout.call(null, marker); 2441 } catch (e){ 2442 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. 2443 // Some versions of I.E. have different rules for clearTimeout vs setTimeout 2444 return cachedClearTimeout.call(this, marker); 2445 } 2446 } 2447 2448 2449 2450} 2451var queue = []; 2452var draining = false; 2453var currentQueue; 2454var queueIndex = -1; 2455 2456function cleanUpNextTick() { 2457 if (!draining || !currentQueue) { 2458 return; 2459 } 2460 draining = false; 2461 if (currentQueue.length) { 2462 queue = currentQueue.concat(queue); 2463 } else { 2464 queueIndex = -1; 2465 } 2466 if (queue.length) { 2467 drainQueue(); 2468 } 2469} 2470 2471function drainQueue() { 2472 if (draining) { 2473 return; 2474 } 2475 var timeout = runTimeout(cleanUpNextTick); 2476 draining = true; 2477 2478 var len = queue.length; 2479 while(len) { 2480 currentQueue = queue; 2481 queue = []; 2482 while (++queueIndex < len) { 2483 if (currentQueue) { 2484 currentQueue[queueIndex].run(); 2485 } 2486 } 2487 queueIndex = -1; 2488 len = queue.length; 2489 } 2490 currentQueue = null; 2491 draining = false; 2492 runClearTimeout(timeout); 2493} 2494 2495process.nextTick = function (fun) { 2496 var args = new Array(arguments.length - 1); 2497 if (arguments.length > 1) { 2498 for (var i = 1; i < arguments.length; i++) { 2499 args[i - 1] = arguments[i]; 2500 } 2501 } 2502 queue.push(new Item(fun, args)); 2503 if (queue.length === 1 && !draining) { 2504 runTimeout(drainQueue); 2505 } 2506}; 2507 2508// v8 likes predictible objects 2509function Item(fun, array) { 2510 this.fun = fun; 2511 this.array = array; 2512} 2513Item.prototype.run = function () { 2514 this.fun.apply(null, this.array); 2515}; 2516process.title = 'browser'; 2517process.browser = true; 2518process.env = {}; 2519process.argv = []; 2520process.version = ''; // empty string to avoid regexp issues 2521process.versions = {}; 2522 2523function noop() {} 2524 2525process.on = noop; 2526process.addListener = noop; 2527process.once = noop; 2528process.off = noop; 2529process.removeListener = noop; 2530process.removeAllListeners = noop; 2531process.emit = noop; 2532process.prependListener = noop; 2533process.prependOnceListener = noop; 2534 2535process.listeners = function (name) { return [] } 2536 2537process.binding = function (name) { 2538 throw new Error('process.binding is not supported'); 2539}; 2540 2541process.cwd = function () { return '/' }; 2542process.chdir = function (dir) { 2543 throw new Error('process.chdir is not supported'); 2544}; 2545process.umask = function() { return 0; }; 2546
2547//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzPzViNjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsVUFBVSIsImZpbGUiOiI2MS5qcyIsInNvdXJjZXNDb250ZW50Ijpb
vendor: 7,470 bytes, line 2547
2547Ii8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG
vendor: 2,771 bytes, lines 2547-2587
25475cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDIgMyA1IDEzIDI1Il0sInNvdXJjZVJvb3QiOiIifQ== 2548//# sourceURL=webpack-internal:///61 2549`)},,function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(68), __esModule: true }; 2550//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qcz8wNGVkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixZQUFZLG1CQUFPLENBQUMsRUFBaUMiLCJmaWxlIjoiNjMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2dldC1pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA1IDE0IDE2Il0sInNvdXJjZVJvb3QiOiIifQ== 2551//# sourceURL=webpack-internal:///63 2552`)},function(module,exports,__webpack_require__){"use strict";eval(` 2553var addToUnscopables = __webpack_require__(65); 2554var step = __webpack_require__(66); 2555var Iterators = __webpack_require__(10); 2556var toIObject = __webpack_require__(18); 2557 2558// 22.1.3.4 Array.prototype.entries() 2559// 22.1.3.13 Array.prototype.keys() 2560// 22.1.3.29 Array.prototype.values() 2561// 22.1.3.30 Array.prototype[@@iterator]() 2562module.exports = __webpack_require__(32)(Array, 'Array', function (iterated, kind) { 2563 this._t = toIObject(iterated); // target 2564 this._i = 0; // next index 2565 this._k = kind; // kind 2566// 22.1.5.2.1 %ArrayIteratorPrototype%.next() 2567}, function () { 2568 var O = this._t; 2569 var kind = this._k; 2570 var index = this._i++; 2571 if (!O || index >= O.length) { 2572 this._t = undefined; 2573 return step(1); 2574 } 2575 if (kind == 'keys') return step(0, index); 2576 if (kind == 'values') return step(0, O[index]); 2577 return step(0, [index, O[index]]); 2578}, 'values'); 2579 2580// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) 2581Iterators.Arguments = Iterators.Array; 2582 2583addToUnscopables('keys'); 2584addToUnscopables('values'); 2585addToUnscopables('entries'); 2586 2587//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzP2M0NjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7QUFDYix1QkFBdUIsbUJBQU8sQ0FBQyxFQUF1QjtBQUN0RCxXQUFXLG1CQUFPLENBQUMsRUFBYztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQyxFQUFjO0FBQ3RDLGdCQUFnQixtQkFBTyxDQUFDLEVBQWU7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsRUFBZ0I7QUFDekMsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QU
2587FDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9 2588//# sourceURL=webpack-internal:///64 2589`)},function(module,exports){eval(`module.exports = function () { /* empty */ }; 2590 2591//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcz9lMjY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QiIsImZpbGUiOiI2NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qc1xuLy8gbW9kdWxlIGlkID0gNjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIDIgMyA0IDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9 2592//# sourceURL=webpack-internal:///65 2593`)},function(module,exports){eval(`module.exports = function (done, value) { 2594 return { value: value, done: !!done }; 2595}; 2596 2597//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcz8xMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVTtBQUNWIiwiZmlsZSI6IjY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzXG4vLyBtb2R1bGUgaWQgPSA2NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDQgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2598//# sourceURL=webpack-internal:///66 2599`)},,function(module,exports,__webpack_require__){eval(`__webpack_require__(57); 2600__webpack_require__(31); 2601module.exports = __webpack_require__(69); 2602 2603//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvci5qcz83ZjE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsRUFBNkI7QUFDckMsbUJBQU8sQ0FBQyxFQUFnQztBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQyxFQUE4QiIsImZpbGUiOiI2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAyIDMgNSAxNCAxNiJdLCJzb3VyY2VSb290IjoiIn0= 2604//# sourceURL=webpack-internal:///68 2605`)},function(module,exports,__webpack_require__){eval(`var anObject = __webpack_require__(5); 2606var get = __webpack_require__(37); 2607module.exports = __webpack_require__(2).getIterator = function (it) { 2608 var iterFn = get(it); 2609 if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!'); 2610 return anObject(iterFn.call(it)); 2611}; 2612 2613//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanM/ODNjNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsQ0FBYztBQUNyQyxVQUFVLG1CQUFPLENBQUMsRUFBNEI7QU
vendor: 4,164 bytes, lines 2613-2680
2613FDOUMsaUJBQWlCLG1CQUFPLENBQUMsQ0FBUztBQUNsQztBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldCA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMiAzIDUgMTQgMTYiXSwic291cmNlUm9vdCI6IiJ9 2614//# sourceURL=webpack-internal:///69 2615`)},,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) || 2616 (typeof self !== "undefined" && self) || 2617 window; 2618var apply = Function.prototype.apply; 2619 2620// DOM APIs, for completeness 2621 2622exports.setTimeout = function() { 2623 return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); 2624}; 2625exports.setInterval = function() { 2626 return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); 2627}; 2628exports.clearTimeout = 2629exports.clearInterval = function(timeout) { 2630 if (timeout) { 2631 timeout.close(); 2632 } 2633}; 2634 2635function Timeout(id, clearFn) { 2636 this._id = id; 2637 this._clearFn = clearFn; 2638} 2639Timeout.prototype.unref = Timeout.prototype.ref = function() {}; 2640Timeout.prototype.close = function() { 2641 this._clearFn.call(scope, this._id); 2642}; 2643 2644// Does not start the time, just sets up the members needed. 2645exports.enroll = function(item, msecs) { 2646 clearTimeout(item._idleTimeoutId); 2647 item._idleTimeout = msecs; 2648}; 2649 2650exports.unenroll = function(item) { 2651 clearTimeout(item._idleTimeoutId); 2652 item._idleTimeout = -1; 2653}; 2654 2655exports._unrefActive = exports.active = function(item) { 2656 clearTimeout(item._idleTimeoutId); 2657 2658 var msecs = item._idleTimeout; 2659 if (msecs >= 0) { 2660 item._idleTimeoutId = setTimeout(function onTimeout() { 2661 if (item._onTimeout) 2662 item._onTimeout(); 2663 }, msecs); 2664 } 2665}; 2666 2667// setimmediate attaches itself to the global object 2668__webpack_require__(88); 2669// On some exotic environments, it's not clear which object \`setimmediate\` was 2670// able to install onto. Search each possibility in the same order as the 2671// \`setimmediate\` library. 2672exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) || 2673 (typeof global !== "undefined" && global.setImmediate) || 2674 (this && this.setImmediate); 2675exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) || 2676 (typeof global !== "undefined" && global.clearImmediate) || 2677 (this && this.clearImmediate); 2678 2679/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55))) 2680//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcz9kN2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLEVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ijg3LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHNjb3BlID0gKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsKSB8fFxuICAgICAgICAgICAgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYpIHx8XG4gICAgICAgICAgICB3aW5kb3c7XG52YXIgYXBwbHkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG5cbi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzXG5cbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybi
vendor: 4,883 bytes, lines 2680-2753
2680BuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJJbnRlcnZhbCk7XG59O1xuZXhwb3J0cy5jbGVhclRpbWVvdXQgPVxuZXhwb3J0cy5jbGVhckludGVydmFsID0gZnVuY3Rpb24odGltZW91dCkge1xuICBpZiAodGltZW91dCkge1xuICAgIHRpbWVvdXQuY2xvc2UoKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICB0aGlzLl9pZCA9IGlkO1xuICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjtcbn1cblRpbWVvdXQucHJvdG90eXBlLnVucmVmID0gVGltZW91dC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oKSB7fTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NsZWFyRm4uY2FsbChzY29wZSwgdGhpcy5faWQpO1xufTtcblxuLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuXG5leHBvcnRzLmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0sIG1zZWNzKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2Vjcztcbn07XG5cbmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSAtMTtcbn07XG5cbmV4cG9ydHMuX3VucmVmQWN0aXZlID0gZXhwb3J0cy5hY3RpdmUgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcblxuICB2YXIgbXNlY3MgPSBpdGVtLl9pZGxlVGltZW91dDtcbiAgaWYgKG1zZWNzID49IDApIHtcbiAgICBpdGVtLl9pZGxlVGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiBvblRpbWVvdXQoKSB7XG4gICAgICBpZiAoaXRlbS5fb25UaW1lb3V0KVxuICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTtcbiAgICB9LCBtc2Vjcyk7XG4gIH1cbn07XG5cbi8vIHNldGltbWVkaWF0ZSBhdHRhY2hlcyBpdHNlbGYgdG8gdGhlIGdsb2JhbCBvYmplY3RcbnJlcXVpcmUoXCJzZXRpbW1lZGlhdGVcIik7XG4vLyBPbiBzb21lIGV4b3RpYyBlbnZpcm9ubWVudHMsIGl0J3Mgbm90IGNsZWFyIHdoaWNoIG9iamVjdCBgc2V0aW1tZWRpYXRlYCB3YXNcbi8vIGFibGUgdG8gaW5zdGFsbCBvbnRvLiAgU2VhcmNoIGVhY2ggcG9zc2liaWxpdHkgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlXG4vLyBgc2V0aW1tZWRpYXRlYCBsaWJyYXJ5LlxuZXhwb3J0cy5zZXRJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0aGlzICYmIHRoaXMuc2V0SW1tZWRpYXRlKTtcbmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwuY2xlYXJJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5jbGVhckltbWVkaWF0ZSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy90aW1lcnMtYnJvd3NlcmlmeS9tYWluLmpzXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSA1IDI1Il0sInNvdXJjZVJvb3QiOiIifQ== 2681//# sourceURL=webpack-internal:///87 2682`)},function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { 2683 "use strict"; 2684 2685 if (global.setImmediate) { 2686 return; 2687 } 2688 2689 var nextHandle = 1; // Spec says greater than zero 2690 var tasksByHandle = {}; 2691 var currentlyRunningATask = false; 2692 var doc = global.document; 2693 var registerImmediate; 2694 2695 function setImmediate(callback) { 2696 // Callback can either be a function or a string 2697 if (typeof callback !== "function") { 2698 callback = new Function("" + callback); 2699 } 2700 // Copy function arguments 2701 var args = new Array(arguments.length - 1); 2702 for (var i = 0; i < args.length; i++) { 2703 args[i] = arguments[i + 1]; 2704 } 2705 // Store and register the task 2706 var task = { callback: callback, args: args }; 2707 tasksByHandle[nextHandle] = task; 2708 registerImmediate(nextHandle); 2709 return nextHandle++; 2710 } 2711 2712 function clearImmediate(handle) { 2713 delete tasksByHandle[handle]; 2714 } 2715 2716 function run(task) { 2717 var callback = task.callback; 2718 var args = task.args; 2719 switch (args.length) { 2720 case 0: 2721 callback(); 2722 break; 2723 case 1: 2724 callback(args[0]); 2725 break; 2726 case 2: 2727 callback(args[0], args[1]); 2728 break; 2729 case 3: 2730 callback(args[0], args[1], args[2]); 2731 break; 2732 default: 2733 callback.apply(undefined, args); 2734 break; 2735 } 2736 } 2737 2738 function runIfPresent(handle) { 2739 // From the spec: "Wait until any invocations of this algorithm started before this one have completed." 2740 // So if we're currently running a task, we'll need to delay this invocation. 2741 if (currentlyRunningATask) { 2742 // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a 2743 // "too much recursion" error. 2744 setTimeout(runIfPresent, 0, handle); 2745 } else { 2746 var task = tasksByHandle[handle]; 2747 if (task) { 2748 currentlyRunningATask = true; 2749 try { 2750 run(task); 2751 } finally { 2752 clearImmediate(handle); 2753 currentlyRunningATask = false;
vendor: 4,583 bytes, lines 2754-2870
2754 } 2755 } 2756 } 2757 } 2758 2759 function installNextTickImplementation() { 2760 registerImmediate = function(handle) { 2761 process.nextTick(function () { runIfPresent(handle); }); 2762 }; 2763 } 2764 2765 function canUsePostMessage() { 2766 // The test against \`importScripts\` prevents this implementation from being installed inside a web worker, 2767 // where \`global.postMessage\` means something completely different and can't be used for this purpose. 2768 if (global.postMessage && !global.importScripts) { 2769 var postMessageIsAsynchronous = true; 2770 var oldOnMessage = global.onmessage; 2771 global.onmessage = function() { 2772 postMessageIsAsynchronous = false; 2773 }; 2774 global.postMessage("", "*"); 2775 global.onmessage = oldOnMessage; 2776 return postMessageIsAsynchronous; 2777 } 2778 } 2779 2780 function installPostMessageImplementation() { 2781 // Installs an event handler on \`global\` for the \`message\` event: see 2782 // * https://developer.mozilla.org/en/DOM/window.postMessage 2783 // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages 2784 2785 var messagePrefix = "setImmediate$" + Math.random() + "$"; 2786 var onGlobalMessage = function(event) { 2787 if (event.source === global && 2788 typeof event.data === "string" && 2789 event.data.indexOf(messagePrefix) === 0) { 2790 runIfPresent(+event.data.slice(messagePrefix.length)); 2791 } 2792 }; 2793 2794 if (global.addEventListener) { 2795 global.addEventListener("message", onGlobalMessage, false); 2796 } else { 2797 global.attachEvent("onmessage", onGlobalMessage); 2798 } 2799 2800 registerImmediate = function(handle) { 2801 global.postMessage(messagePrefix + handle, "*"); 2802 }; 2803 } 2804 2805 function installMessageChannelImplementation() { 2806 var channel = new MessageChannel(); 2807 channel.port1.onmessage = function(event) { 2808 var handle = event.data; 2809 runIfPresent(handle); 2810 }; 2811 2812 registerImmediate = function(handle) { 2813 channel.port2.postMessage(handle); 2814 }; 2815 } 2816 2817 function installReadyStateChangeImplementation() { 2818 var html = doc.documentElement; 2819 registerImmediate = function(handle) { 2820 // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted 2821 // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. 2822 var script = doc.createElement("script"); 2823 script.onreadystatechange = function () { 2824 runIfPresent(handle); 2825 script.onreadystatechange = null; 2826 html.removeChild(script); 2827 script = null; 2828 }; 2829 html.appendChild(script); 2830 }; 2831 } 2832 2833 function installSetTimeoutImplementation() { 2834 registerImmediate = function(handle) { 2835 setTimeout(runIfPresent, 0, handle); 2836 }; 2837 } 2838 2839 // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. 2840 var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); 2841 attachTo = attachTo && attachTo.setTimeout ? attachTo : global; 2842 2843 // Don't get fooled by e.g. browserify environments. 2844 if ({}.toString.call(global.process) === "[object process]") { 2845 // For Node.js before 0.9 2846 installNextTickImplementation(); 2847 2848 } else if (canUsePostMessage()) { 2849 // For non-IE10 modern browsers 2850 installPostMessageImplementation(); 2851 2852 } else if (global.MessageChannel) { 2853 // For web workers, where supported 2854 installMessageChannelImplementation(); 2855 2856 } else if (doc && "onreadystatechange" in doc.createElement("script")) { 2857 // For IE 6\u20138 2858 installReadyStateChangeImplementation(); 2859 2860 } else { 2861 // For older browsers 2862 installSetTimeoutImplementation(); 2863 } 2864 2865 attachTo.setImmediate = setImmediate; 2866 attachTo.clearImmediate = clearImmediate; 2867}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self)); 2868 2869/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(55), __webpack_require__(61))) 2870//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcz85YjJhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0F
2870BRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0IsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiI4OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCB1bmRlZmluZWQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIGlmIChnbG9iYWwuc2V0SW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV4dEhhbmRsZSA9IDE7IC8vIFNwZWMgc2F5cyBncmVhdGVyIHRoYW4gemVyb1xuICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307XG4gICAgdmFyIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IGZhbHNlO1xuICAgIHZhciBkb2MgPSBnbG9iYWwuZG9jdW1lbnQ7XG4gICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlO1xuXG4gICAgZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG4gICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmdcbiAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IG5ldyBGdW5jdGlvbihcIlwiICsgY2FsbGJhY2spO1xuICAgICAgfVxuICAgICAgLy8gQ29weSBmdW5jdGlvbiBhcmd1bWVudHNcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdO1xuICAgICAgfVxuICAgICAgLy8gU3RvcmUgYW5kIHJlZ2lzdGVyIHRoZSB0YXNrXG4gICAgICB2Y
2870XIgdGFzayA9IHsgY2FsbGJhY2s6IGNhbGxiYWNrLCBhcmdzOiBhcmdzIH07XG4gICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzaztcbiAgICAgIHJlZ2lzdGVySW1tZWRpYXRlKG5leHRIYW5kbGUpO1xuICAgICAgcmV0dXJuIG5leHRIYW5kbGUrKztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShoYW5kbGUpIHtcbiAgICAgICAgZGVsZXRlIHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW4odGFzaykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSB0YXNrLmNhbGxiYWNrO1xuICAgICAgICB2YXIgYXJncyA9IHRhc2suYXJncztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYWxsYmFjay5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5JZlByZXNlbnQoaGFuZGxlKSB7XG4gICAgICAgIC8vIEZyb20gdGhlIHNwZWM6IFwiV2FpdCB1bnRpbCBhbnkgaW52b2NhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gc3RhcnRlZCBiZWZvcmUgdGhpcyBvbmUgaGF2ZSBjb21wbGV0ZWQuXCJcbiAgICAgICAgLy8gU28gaWYgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgYSB0YXNrLCB3ZSdsbCBuZWVkIHRvIGRlbGF5IHRoaXMgaW52b2NhdGlvbi5cbiAgICAgICAgaWYgKGN1cnJlbnRseVJ1bm5pbmdBVGFzaykge1xuICAgICAgICAgICAgLy8gRGVsYXkgYnkgZG9pbmcgYSBzZXRUaW1lb3V0LiBzZXRJbW1lZGlhdGUgd2FzIHRyaWVkIGluc3RlYWQsIGJ1dCBpbiBGaXJlZm94IDcgaXQgZ2VuZXJhdGVkIGFcbiAgICAgICAgICAgIC8vIFwidG9vIG11Y2ggcmVjdXJzaW9uXCIgZXJyb3IuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0YXNrID0gdGFza3NCeUhhbmRsZVtoYW5kbGVdO1xuICAgICAgICAgICAgaWYgKHRhc2spIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bih0YXNrKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckltbWVkaWF0ZShoYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkgeyBydW5JZlByZXNlbnQoaGFuZGxlKTsgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuVXNlUG9zdE1lc3NhZ2UoKSB7XG4gICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlcixcbiAgICAgICAgLy8gd2hlcmUgYGdsb2JhbC5wb3N0TWVzc2FnZWAgbWVhbnMgc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFuZCBjYW4ndCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAgIGlmIChnbG9iYWwucG9zdE1lc3NhZ2UgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgICAgICAgICB2Y
2870XIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgb2xkT25NZXNzYWdlID0gZ2xvYmFsLm9ubWVzc2FnZTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gZmFsc2U7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKFwiXCIsIFwiKlwiKTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBvbGRPbk1lc3NhZ2U7XG4gICAgICAgICAgICByZXR1cm4gcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICAvLyBJbnN0YWxscyBhbiBldmVudCBoYW5kbGVyIG9uIGBnbG9iYWxgIGZvciB0aGUgYG1lc3NhZ2VgIGV2ZW50OiBzZWVcbiAgICAgICAgLy8gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9ET00vd2luZG93LnBvc3RNZXNzYWdlXG4gICAgICAgIC8vICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbXMuaHRtbCNjcm9zc0RvY3VtZW50TWVzc2FnZXNcblxuICAgICAgICB2YXIgbWVzc2FnZVByZWZpeCA9IFwic2V0SW1tZWRpYXRlJFwiICsgTWF0aC5yYW5kb20oKSArIFwiJFwiO1xuICAgICAgICB2YXIgb25HbG9iYWxNZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT09IGdsb2JhbCAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBldmVudC5kYXRhID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KCtldmVudC5kYXRhLnNsaWNlKG1lc3NhZ2VQcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbG9iYWwuYXR0YWNoRXZlbnQoXCJvbm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UobWVzc2FnZVByZWZpeCArIGhhbmRsZSwgXCIqXCIpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxNZXNzYWdlQ2hhbm5lbEltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICB2Y
2870XIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlID0gZXZlbnQuZGF0YTtcbiAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKGhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgPHNjcmlwdD4gZWxlbWVudDsgaXRzIHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBhc3luY2hyb25vdXNseSBvbmNlIGl0IGlzIGluc2VydGVkXG4gICAgICAgICAgICAvLyBpbnRvIHRoZSBkb2N1bWVudC4gRG8gc28sIHRodXMgcXVldWluZyB1cCB0aGUgdGFzay4gUmVtZW1iZXIgdG8gY2xlYW4gdXAgb25jZSBpdCdzIGJlZW4gY2FsbGVkLlxuICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFNldFRpbWVvdXRJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIHN1cHBvcnRlZCwgd2Ugc2hvdWxkIGF0dGFjaCB0byB0aGUgcHJvdG90eXBlIG9mIGdsb2JhbCwgc2luY2UgdGhhdCBpcyB3aGVyZSBzZXRUaW1lb3V0IGV0IGFsLiBsaXZlLlxuICAgIHZhciBhdHRhY2hUbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsKTtcbiAgICBhdHRhY2hUbyA9IGF0dGFjaFRvICYmIGF0dGFjaFRvLnNldFRpbWVvdXQgPyBhdHRhY2hUbyA6IGdsb2JhbDtcblxuICAgIC8vIERvbid0IGdldCBmb29sZWQgYnkgZS5nLiBicm93c2VyaWZ5IGVudmlyb25tZW50cy5cbiAgICBpZiAoe30udG9TdHJpbmcuY2FsbChnbG9iYWwucHJvY2VzcykgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiKSB7XG4gICAgICAgIC8vIEZvciBOb2RlLmpzIGJlZm9yZSAwLjlcbiAgICAgICAgaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoY2FuVXNlUG9zdE1lc3NhZ2UoKSkge1xuICAgICAgICAvLyBGb3Igbm9uLUlFMTAgbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGdsb2JhbC5NZXNzYWdlQ2hhbm5lbCkge1xuICAgICAgICAvLyBGb3Igd2ViIHdvcmtlcnMsIHdoZXJlIHN1cHBvcnRlZFxuICAgICAgICBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChkb2MgJiYgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiBpbiBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSkge1xuICAgICAgICAvLyBGb3IgSUUgNuKAkzhcbiAgICAgICAgaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIG9sZGVyIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKTtcbiAgICB9XG5cbiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7XG4gICAgYXR0YWNoVG8uY2xlYXJJbW1lZGlhdGUgPSBjbGVhckltbWVkaWF0ZTtcbn0odHlwZW9mIHNlbGYgPT09IFwidW5kZWZpbmVkXCIgPyB0eXBlb2YgZ2xvYmFsID09PSBcInVuZGVmaW5lZFwiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3NldGltbWVkaWF0ZS9zZXRJbW1lZGlhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDg4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIDUgMjUiXSwic291cmNlUm9vdCI6IiJ9 2871//# sourceURL=webpack-internal:///88 2872`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* unused harmony export CLASSES */ 2873/* unused harmony export CLASS_ACTIVE */ 2874/* unused harmony export CLASS_ARROW */ 2875/* unused harmony export CLASS_ARROWS */ 2876/* unused harmony export CLASS_ARROW_NEXT */ 2877/* unused harmony export CLASS_ARROW_PREV */ 2878/* unused harmony export CLASS_CLONE */ 2879/* unused harmony export CLASS_CONTAINER */ 2880/* unused harmony export CLASS_FOCUS_IN */ 2881/* unused harmony export CLASS_INITIALIZED */ 2882/* unused harmony export CLASS_LIST */ 2883/* unused harmony export CLASS_LOADING */ 2884/* unused harmony export CLASS_NEXT */ 2885/* unused harmony export CLASS_OVERFLOW */ 2886/* unused harmony export CLASS_PAGINATION */ 2887/* unused harmony export CLASS_PAGINATION_PAGE */ 2888/* unused harmony export CLASS_PREV */ 2889/* unused harmony export CLASS_PROGRESS */ 2890/* unused harmony export CLASS_PROGRESS_BAR */ 2891/* unused harmony export CLASS_ROOT */ 2892/* unused harmony export CLASS_SLIDE */ 2893/* unused harmony export CLASS_SPINNER */ 2894/* unused harmony export CLASS_SR */ 2895/* unused harmony export CLASS_TOGGLE */ 2896/* unused harmony export CLASS_TOGGLE_PAUSE */ 2897/* unused harmony export CLASS_TOGGLE_PLAY */ 2898/* unused harmony export CLASS_TRACK */ 2899/* unused harmony export CLASS_VISIBLE */ 2900/* unused harmony export DEFAULTS */ 2901/* unused harmony export EVENT_ACTIVE */ 2902/* unused harmony export EVENT_ARROWS_MOUNTED */ 2903/* unused harmony export EVENT_ARROWS_UPDATED */ 2904/* unused harmony export EVENT_AUTOPLAY_PAUSE */ 2905/* unused harmony export EVENT_AUTOPLAY_PLAY */ 2906/* unused harmony export EVENT_AUTOPLAY_PLAYING */ 2907/* unused harmony export EVENT_CLICK */ 2908/* unused harmony export EVENT_DESTROY */ 2909/* unused harmony export EVENT_DRAG */ 2910/* unused harmony export EVENT_DRAGGED */ 2911/* unused harmony export EVENT_DRAGGING */ 2912/* unused harmony export EVENT_END_INDEX_CHANGED */ 2913/* unused harmony export EVENT_HIDDEN */ 2914/* unused harmony export EVENT_INACTIVE */ 2915/* unused harmony export EVENT_LAZYLOAD_LOADED */ 2916/* unused harmony export EVENT_MOUNTED */ 2917/* unused harmony export EVENT_MOVE */ 2918/* unused harmony export EVENT_MOVED */ 2919/* unused harmony export EVENT_NAVIGATION_MOUNTED */ 2920/* unused harmony export EVENT_OVERFLOW */ 2921/* unused harmony export EVENT_PAGINATION_MOUNTED */ 2922/* unused harmony export EVENT_PAGINATION_UPDATED */ 2923/* unused harmony export EVENT_READY */ 2924/* unused harmony export EVENT_REFRESH */ 2925/* unused harmony export EVENT_RESIZE */ 2926/* unused harmony export EVENT_RESIZED */ 2927/* unused harmony export EVENT_SCROLL */ 2928/* unused harmony export EVENT_SCROLLED */ 2929/* unused harmony export EVENT_SHIFTED */ 2930/* unused harmony export EVENT_SLIDE_KEYDOWN */ 2931/* unused harmony export EVENT_UPDATED */ 2932/* unused harmony export EVENT_VISIBLE */ 2933/* unused harmony export EventBinder */ 2934/* unused harmony export EventInterface */ 2935/* unused harmony export FADE */ 2936/* unused harmony export LOOP */ 2937/* unused harmony export LTR */ 2938/* unused harmony export RTL */ 2939/* unused harmony export RequestInterval */ 2940/* unused harmony export SLIDE */ 2941/* unused harmony export STATUS_CLASSES */ 2942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Splide; }); 2943/* unused harmony export SplideRenderer */ 2944/* unused harmony export State */ 2945/* unused harmony export TTB */ 2946/* unused harmony export Throttle */ 2947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Splide; });
vendor: 42,360 bytes, lines 2948-4575
2948function _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); } } 2949 2950function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 2951 2952/*! 2953 * Splide.js 2954 * Version : 4.1.4 2955 * License : MIT 2956 * Copyright: 2022 Naotoshi Fujita 2957 */ 2958var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)"; 2959var CREATED = 1; 2960var MOUNTED = 2; 2961var IDLE = 3; 2962var MOVING = 4; 2963var SCROLLING = 5; 2964var DRAGGING = 6; 2965var DESTROYED = 7; 2966var STATES = { 2967 CREATED: CREATED, 2968 MOUNTED: MOUNTED, 2969 IDLE: IDLE, 2970 MOVING: MOVING, 2971 SCROLLING: SCROLLING, 2972 DRAGGING: DRAGGING, 2973 DESTROYED: DESTROYED 2974}; 2975 2976function empty(array) { 2977 array.length = 0; 2978} 2979 2980function slice(arrayLike, start, end) { 2981 return Array.prototype.slice.call(arrayLike, start, end); 2982} 2983 2984function apply(func) { 2985 return func.bind.apply(func, [null].concat(slice(arguments, 1))); 2986} 2987 2988var nextTick = setTimeout; 2989 2990var noop = function noop() {}; 2991 2992function raf(func) { 2993 return requestAnimationFrame(func); 2994} 2995 2996function typeOf(type, subject) { 2997 return typeof subject === type; 2998} 2999 3000function isObject(subject) { 3001 return !isNull(subject) && typeOf("object", subject); 3002} 3003 3004var isArray = Array.isArray; 3005var isFunction = apply(typeOf, "function"); 3006var isString = apply(typeOf, "string"); 3007var isUndefined = apply(typeOf, "undefined"); 3008 3009function isNull(subject) { 3010 return subject === null; 3011} 3012 3013function isHTMLElement(subject) { 3014 try { 3015 return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement; 3016 } catch (e) { 3017 return false; 3018 } 3019} 3020 3021function toArray(value) { 3022 return isArray(value) ? value : [value]; 3023} 3024 3025function forEach(values, iteratee) { 3026 toArray(values).forEach(iteratee); 3027} 3028 3029function includes(array, value) { 3030 return array.indexOf(value) > -1; 3031} 3032 3033function push(array, items) { 3034 array.push.apply(array, toArray(items)); 3035 return array; 3036} 3037 3038function toggleClass(elm, classes, add) { 3039 if (elm) { 3040 forEach(classes, function (name) { 3041 if (name) { 3042 elm.classList[add ? "add" : "remove"](name); 3043 } 3044 }); 3045 } 3046} 3047 3048function addClass(elm, classes) { 3049 toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); 3050} 3051 3052function append(parent, children) { 3053 forEach(children, parent.appendChild.bind(parent)); 3054} 3055 3056function before(nodes, ref) { 3057 forEach(nodes, function (node) { 3058 var parent = (ref || node).parentNode; 3059 3060 if (parent) { 3061 parent.insertBefore(node, ref); 3062 } 3063 }); 3064} 3065 3066function matches(elm, selector) { 3067 return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); 3068} 3069 3070function children(parent, selector) { 3071 var children2 = parent ? slice(parent.children) : []; 3072 return selector ? children2.filter(function (child) { 3073 return matches(child, selector); 3074 }) : children2; 3075} 3076 3077function child(parent, selector) { 3078 return selector ? children(parent, selector)[0] : parent.firstElementChild; 3079} 3080 3081var ownKeys = Object.keys; 3082 3083function forOwn(object, iteratee, right) { 3084 if (object) { 3085 (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) { 3086 key !== "__proto__" && iteratee(object[key], key); 3087 }); 3088 } 3089 3090 return object; 3091} 3092 3093function assign(object) { 3094 slice(arguments, 1).forEach(function (source) { 3095 forOwn(source, function (value, key) { 3096 object[key] = source[key]; 3097 }); 3098 }); 3099 return object; 3100} 3101 3102function merge(object) { 3103 slice(arguments, 1).forEach(function (source) { 3104 forOwn(source, function (value, key) { 3105 if (isArray(value)) { 3106 object[key] = value.slice(); 3107 } else if (isObject(value)) { 3108 object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value); 3109 } else { 3110 object[key] = value; 3111 } 3112 }); 3113 }); 3114 return object; 3115} 3116 3117function omit(object, keys) { 3118 forEach(keys || ownKeys(object), function (key) { 3119 delete object[key]; 3120 }); 3121} 3122 3123function removeAttribute(elms, attrs) { 3124 forEach(elms, function (elm) { 3125 forEach(attrs, function (attr) { 3126 elm && elm.removeAttribute(attr); 3127 }); 3128 }); 3129} 3130 3131function setAttribute(elms, attrs, value) { 3132 if (isObject(attrs)) { 3133 forOwn(attrs, function (value2, name) { 3134 setAttribute(elms, name, value2); 3135 }); 3136 } else { 3137 forEach(elms, function (elm) { 3138 isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); 3139 }); 3140 } 3141} 3142 3143function create(tag, attrs, parent) { 3144 var elm = document.createElement(tag); 3145 3146 if (attrs) { 3147 isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); 3148 } 3149 3150 parent && append(parent, elm); 3151 return elm; 3152} 3153 3154function style(elm, prop, value) { 3155 if (isUndefined(value)) { 3156 return getComputedStyle(elm)[prop]; 3157 } 3158 3159 if (!isNull(value)) { 3160 elm.style[prop] = "" + value; 3161 } 3162} 3163 3164function display(elm, display2) { 3165 style(elm, "display", display2); 3166} 3167 3168function focus(elm) { 3169 elm["setActive"] && elm["setActive"]() || elm.focus({ 3170 preventScroll: true 3171 }); 3172} 3173 3174function getAttribute(elm, attr) { 3175 return elm.getAttribute(attr); 3176} 3177 3178function hasClass(elm, className) { 3179 return elm && elm.classList.contains(className); 3180} 3181 3182function rect(target) { 3183 return target.getBoundingClientRect(); 3184} 3185 3186function remove(nodes) { 3187 forEach(nodes, function (node) { 3188 if (node && node.parentNode) { 3189 node.parentNode.removeChild(node); 3190 } 3191 }); 3192} 3193 3194function parseHtml(html) { 3195 return child(new DOMParser().parseFromString(html, "text/html").body); 3196} 3197 3198function prevent(e, stopPropagation) { 3199 e.preventDefault(); 3200 3201 if (stopPropagation) { 3202 e.stopPropagation(); 3203 e.stopImmediatePropagation(); 3204 } 3205} 3206 3207function query(parent, selector) { 3208 return parent && parent.querySelector(selector); 3209} 3210 3211function queryAll(parent, selector) { 3212 return selector ? slice(parent.querySelectorAll(selector)) : []; 3213} 3214 3215function removeClass(elm, classes) { 3216 toggleClass(elm, classes, false); 3217} 3218 3219function timeOf(e) { 3220 return e.timeStamp; 3221} 3222 3223function unit(value) { 3224 return isString(value) ? value : value ? value + "px" : ""; 3225} 3226 3227var PROJECT_CODE = "splide"; 3228var DATA_ATTRIBUTE = "data-" + PROJECT_CODE; 3229 3230function assert(condition, message) { 3231 if (!condition) { 3232 throw new Error("[" + PROJECT_CODE + "] " + (message || "")); 3233 } 3234} 3235 3236var min = Math.min, 3237 max = Math.max, 3238 floor = Math.floor, 3239 ceil = Math.ceil, 3240 abs = Math.abs; 3241 3242function approximatelyEqual(x, y, epsilon) { 3243 return abs(x - y) < epsilon; 3244} 3245 3246function between(number, x, y, exclusive) { 3247 var minimum = min(x, y); 3248 var maximum = max(x, y); 3249 return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum; 3250} 3251 3252function clamp(number, x, y) { 3253 var minimum = min(x, y); 3254 var maximum = max(x, y); 3255 return min(max(minimum, number), maximum); 3256} 3257 3258function sign(x) { 3259 return +(x > 0) - +(x < 0); 3260} 3261 3262function camelToKebab(string) { 3263 return string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); 3264} 3265 3266function format(string, replacements) { 3267 forEach(replacements, function (replacement) { 3268 string = string.replace("%s", "" + replacement); 3269 }); 3270 return string; 3271} 3272 3273function pad(number) { 3274 return number < 10 ? "0" + number : "" + number; 3275} 3276 3277var ids = {}; 3278 3279function uniqueId(prefix) { 3280 return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1); 3281} 3282 3283function EventBinder() { 3284 var listeners = []; 3285 3286 function bind(targets, events, callback, options) { 3287 forEachEvent(targets, events, function (target, event, namespace) { 3288 var isEventTarget = ("addEventListener" in target); 3289 var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); 3290 isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); 3291 listeners.push([target, event, namespace, callback, remover]); 3292 }); 3293 } 3294 3295 function unbind(targets, events, callback) { 3296 forEachEvent(targets, events, function (target, event, namespace) { 3297 listeners = listeners.filter(function (listener) { 3298 if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { 3299 listener[4](); 3300 return false; 3301 } 3302 3303 return true; 3304 }); 3305 }); 3306 } 3307 3308 function dispatch(target, type, detail) { 3309 var e; 3310 var bubbles = true; 3311 3312 if (typeof CustomEvent === "function") { 3313 e = new CustomEvent(type, { 3314 bubbles: bubbles, 3315 detail: detail 3316 }); 3317 } else { 3318 e = document.createEvent("CustomEvent"); 3319 e.initCustomEvent(type, bubbles, false, detail); 3320 } 3321 3322 target.dispatchEvent(e); 3323 return e; 3324 } 3325 3326 function forEachEvent(targets, events, iteratee) { 3327 forEach(targets, function (target) { 3328 target && forEach(events, function (events2) { 3329 events2.split(" ").forEach(function (eventNS) { 3330 var fragment = eventNS.split("."); 3331 iteratee(target, fragment[0], fragment[1]); 3332 }); 3333 }); 3334 }); 3335 } 3336 3337 function destroy() { 3338 listeners.forEach(function (data) { 3339 data[4](); 3340 }); 3341 empty(listeners); 3342 } 3343 3344 return { 3345 bind: bind, 3346 unbind: unbind, 3347 dispatch: dispatch, 3348 destroy: destroy 3349 }; 3350} 3351 3352var EVENT_MOUNTED = "mounted"; 3353var EVENT_READY = "ready"; 3354var EVENT_MOVE = "move"; 3355var EVENT_MOVED = "moved"; 3356var EVENT_CLICK = "click"; 3357var EVENT_ACTIVE = "active"; 3358var EVENT_INACTIVE = "inactive"; 3359var EVENT_VISIBLE = "visible"; 3360var EVENT_HIDDEN = "hidden"; 3361var EVENT_REFRESH = "refresh"; 3362var EVENT_UPDATED = "updated"; 3363var EVENT_RESIZE = "resize"; 3364var EVENT_RESIZED = "resized"; 3365var EVENT_DRAG = "drag"; 3366var EVENT_DRAGGING = "dragging"; 3367var EVENT_DRAGGED = "dragged"; 3368var EVENT_SCROLL = "scroll"; 3369var EVENT_SCROLLED = "scrolled"; 3370var EVENT_OVERFLOW = "overflow"; 3371var EVENT_DESTROY = "destroy"; 3372var EVENT_ARROWS_MOUNTED = "arrows:mounted"; 3373var EVENT_ARROWS_UPDATED = "arrows:updated"; 3374var EVENT_PAGINATION_MOUNTED = "pagination:mounted"; 3375var EVENT_PAGINATION_UPDATED = "pagination:updated"; 3376var EVENT_NAVIGATION_MOUNTED = "navigation:mounted"; 3377var EVENT_AUTOPLAY_PLAY = "autoplay:play"; 3378var EVENT_AUTOPLAY_PLAYING = "autoplay:playing"; 3379var EVENT_AUTOPLAY_PAUSE = "autoplay:pause"; 3380var EVENT_LAZYLOAD_LOADED = "lazyload:loaded"; 3381var EVENT_SLIDE_KEYDOWN = "sk"; 3382var EVENT_SHIFTED = "sh"; 3383var EVENT_END_INDEX_CHANGED = "ei"; 3384 3385function EventInterface(Splide2) { 3386 var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); 3387 var binder = EventBinder(); 3388 3389 function on(events, callback) { 3390 binder.bind(bus, toArray(events).join(" "), function (e) { 3391 callback.apply(callback, isArray(e.detail) ? e.detail : []); 3392 }); 3393 } 3394 3395 function emit(event) { 3396 binder.dispatch(bus, event, slice(arguments, 1)); 3397 } 3398 3399 if (Splide2) { 3400 Splide2.event.on(EVENT_DESTROY, binder.destroy); 3401 } 3402 3403 return assign(binder, { 3404 bus: bus, 3405 on: on, 3406 off: apply(binder.unbind, bus), 3407 emit: emit 3408 }); 3409} 3410 3411function RequestInterval(interval, onInterval, onUpdate, limit) { 3412 var now = Date.now; 3413 var startTime; 3414 var rate = 0; 3415 var id; 3416 var paused = true; 3417 var count = 0; 3418 3419 function update() { 3420 if (!paused) { 3421 rate = interval ? min((now() - startTime) / interval, 1) : 1; 3422 onUpdate && onUpdate(rate); 3423 3424 if (rate >= 1) { 3425 onInterval(); 3426 startTime = now(); 3427 3428 if (limit && ++count >= limit) { 3429 return pause(); 3430 } 3431 } 3432 3433 id = raf(update); 3434 } 3435 } 3436 3437 function start(resume) { 3438 resume || cancel(); 3439 startTime = now() - (resume ? rate * interval : 0); 3440 paused = false; 3441 id = raf(update); 3442 } 3443 3444 function pause() { 3445 paused = true; 3446 } 3447 3448 function rewind() { 3449 startTime = now(); 3450 rate = 0; 3451 3452 if (onUpdate) { 3453 onUpdate(rate); 3454 } 3455 } 3456 3457 function cancel() { 3458 id && cancelAnimationFrame(id); 3459 rate = 0; 3460 id = 0; 3461 paused = true; 3462 } 3463 3464 function set(time) { 3465 interval = time; 3466 } 3467 3468 function isPaused() { 3469 return paused; 3470 } 3471 3472 return { 3473 start: start, 3474 rewind: rewind, 3475 pause: pause, 3476 cancel: cancel, 3477 set: set, 3478 isPaused: isPaused 3479 }; 3480} 3481 3482function State(initialState) { 3483 var state = initialState; 3484 3485 function set(value) { 3486 state = value; 3487 } 3488 3489 function is(states) { 3490 return includes(toArray(states), state); 3491 } 3492 3493 return { 3494 set: set, 3495 is: is 3496 }; 3497} 3498 3499function Throttle(func, duration) { 3500 var interval = RequestInterval(duration || 0, func, null, 1); 3501 return function () { 3502 interval.isPaused() && interval.start(); 3503 }; 3504} 3505 3506function Media(Splide2, Components2, options) { 3507 var state = Splide2.state; 3508 var breakpoints = options.breakpoints || {}; 3509 var reducedMotion = options.reducedMotion || {}; 3510 var binder = EventBinder(); 3511 var queries = []; 3512 3513 function setup() { 3514 var isMin = options.mediaQuery === "min"; 3515 ownKeys(breakpoints).sort(function (n, m) { 3516 return isMin ? +n - +m : +m - +n; 3517 }).forEach(function (key) { 3518 register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)"); 3519 }); 3520 register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION); 3521 update(); 3522 } 3523 3524 function destroy(completely) { 3525 if (completely) { 3526 binder.destroy(); 3527 } 3528 } 3529 3530 function register(options2, query) { 3531 var queryList = matchMedia(query); 3532 binder.bind(queryList, "change", update); 3533 queries.push([options2, queryList]); 3534 } 3535 3536 function update() { 3537 var destroyed = state.is(DESTROYED); 3538 var direction = options.direction; 3539 var merged = queries.reduce(function (merged2, entry) { 3540 return merge(merged2, entry[1].matches ? entry[0] : {}); 3541 }, {}); 3542 omit(options); 3543 set(merged); 3544 3545 if (options.destroy) { 3546 Splide2.destroy(options.destroy === "completely"); 3547 } else if (destroyed) { 3548 destroy(true); 3549 Splide2.mount(); 3550 } else { 3551 direction !== options.direction && Splide2.refresh(); 3552 } 3553 } 3554 3555 function reduce(enable) { 3556 if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) { 3557 enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion)); 3558 } 3559 } 3560 3561 function set(opts, base, notify) { 3562 merge(options, opts); 3563 base && merge(Object.getPrototypeOf(options), opts); 3564 3565 if (notify || !state.is(CREATED)) { 3566 Splide2.emit(EVENT_UPDATED, options); 3567 } 3568 } 3569 3570 return { 3571 setup: setup, 3572 destroy: destroy, 3573 reduce: reduce, 3574 set: set 3575 }; 3576} 3577 3578var ARROW = "Arrow"; 3579var ARROW_LEFT = ARROW + "Left"; 3580var ARROW_RIGHT = ARROW + "Right"; 3581var ARROW_UP = ARROW + "Up"; 3582var ARROW_DOWN = ARROW + "Down"; 3583var LTR = "ltr"; 3584var RTL = "rtl"; 3585var TTB = "ttb"; 3586var ORIENTATION_MAP = { 3587 width: ["height"], 3588 left: ["top", "right"], 3589 right: ["bottom", "left"], 3590 x: ["y"], 3591 X: ["Y"], 3592 Y: ["X"], 3593 ArrowLeft: [ARROW_UP, ARROW_RIGHT], 3594 ArrowRight: [ARROW_DOWN, ARROW_LEFT] 3595}; 3596 3597function Direction(Splide2, Components2, options) { 3598 function resolve(prop, axisOnly, direction) { 3599 direction = direction || options.direction; 3600 var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1; 3601 return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) { 3602 var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match; 3603 return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement; 3604 }); 3605 } 3606 3607 function orient(value) { 3608 return value * (options.direction === RTL ? 1 : -1); 3609 } 3610 3611 return { 3612 resolve: resolve, 3613 orient: orient 3614 }; 3615} 3616 3617var ROLE = "role"; 3618var TAB_INDEX = "tabindex"; 3619var DISABLED = "disabled"; 3620var ARIA_PREFIX = "aria-"; 3621var ARIA_CONTROLS = ARIA_PREFIX + "controls"; 3622var ARIA_CURRENT = ARIA_PREFIX + "current"; 3623var ARIA_SELECTED = ARIA_PREFIX + "selected"; 3624var ARIA_LABEL = ARIA_PREFIX + "label"; 3625var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby"; 3626var ARIA_HIDDEN = ARIA_PREFIX + "hidden"; 3627var ARIA_ORIENTATION = ARIA_PREFIX + "orientation"; 3628var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription"; 3629var ARIA_LIVE = ARIA_PREFIX + "live"; 3630var ARIA_BUSY = ARIA_PREFIX + "busy"; 3631var ARIA_ATOMIC = ARIA_PREFIX + "atomic"; 3632var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION]; 3633var CLASS_PREFIX = PROJECT_CODE + "__"; 3634var STATUS_CLASS_PREFIX = "is-"; 3635var CLASS_ROOT = PROJECT_CODE; 3636var CLASS_TRACK = CLASS_PREFIX + "track"; 3637var CLASS_LIST = CLASS_PREFIX + "list"; 3638var CLASS_SLIDE = CLASS_PREFIX + "slide"; 3639var CLASS_CLONE = CLASS_SLIDE + "--clone"; 3640var CLASS_CONTAINER = CLASS_SLIDE + "__container"; 3641var CLASS_ARROWS = CLASS_PREFIX + "arrows"; 3642var CLASS_ARROW = CLASS_PREFIX + "arrow"; 3643var CLASS_ARROW_PREV = CLASS_ARROW + "--prev"; 3644var CLASS_ARROW_NEXT = CLASS_ARROW + "--next"; 3645var CLASS_PAGINATION = CLASS_PREFIX + "pagination"; 3646var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page"; 3647var CLASS_PROGRESS = CLASS_PREFIX + "progress"; 3648var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar"; 3649var CLASS_TOGGLE = CLASS_PREFIX + "toggle"; 3650var CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play"; 3651var CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause"; 3652var CLASS_SPINNER = CLASS_PREFIX + "spinner"; 3653var CLASS_SR = CLASS_PREFIX + "sr"; 3654var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized"; 3655var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active"; 3656var CLASS_PREV = STATUS_CLASS_PREFIX + "prev"; 3657var CLASS_NEXT = STATUS_CLASS_PREFIX + "next"; 3658var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible"; 3659var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading"; 3660var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in"; 3661var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow"; 3662var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW]; 3663var CLASSES = { 3664 slide: CLASS_SLIDE, 3665 clone: CLASS_CLONE, 3666 arrows: CLASS_ARROWS, 3667 arrow: CLASS_ARROW, 3668 prev: CLASS_ARROW_PREV, 3669 next: CLASS_ARROW_NEXT, 3670 pagination: CLASS_PAGINATION, 3671 page: CLASS_PAGINATION_PAGE, 3672 spinner: CLASS_SPINNER 3673}; 3674 3675function closest(from, selector) { 3676 if (isFunction(from.closest)) { 3677 return from.closest(selector); 3678 } 3679 3680 var elm = from; 3681 3682 while (elm && elm.nodeType === 1) { 3683 if (matches(elm, selector)) { 3684 break; 3685 } 3686 3687 elm = elm.parentElement; 3688 } 3689 3690 return elm; 3691} 3692 3693var FRICTION = 5; 3694var LOG_INTERVAL = 200; 3695var POINTER_DOWN_EVENTS = "touchstart mousedown"; 3696var POINTER_MOVE_EVENTS = "touchmove mousemove"; 3697var POINTER_UP_EVENTS = "touchend touchcancel mouseup click"; 3698 3699function Elements(Splide2, Components2, options) { 3700 var _EventInterface = EventInterface(Splide2), 3701 on = _EventInterface.on, 3702 bind = _EventInterface.bind; 3703 3704 var root = Splide2.root; 3705 var i18n = options.i18n; 3706 var elements = {}; 3707 var slides = []; 3708 var rootClasses = []; 3709 var trackClasses = []; 3710 var track; 3711 var list; 3712 var isUsingKey; 3713 3714 function setup() { 3715 collect(); 3716 init(); 3717 update(); 3718 } 3719 3720 function mount() { 3721 on(EVENT_REFRESH, destroy); 3722 on(EVENT_REFRESH, setup); 3723 on(EVENT_UPDATED, update); 3724 bind(document, POINTER_DOWN_EVENTS + " keydown", function (e) { 3725 isUsingKey = e.type === "keydown"; 3726 }, { 3727 capture: true 3728 }); 3729 bind(root, "focusin", function () { 3730 toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey); 3731 }); 3732 } 3733 3734 function destroy(completely) { 3735 var attrs = ALL_ATTRIBUTES.concat("style"); 3736 empty(slides); 3737 removeClass(root, rootClasses); 3738 removeClass(track, trackClasses); 3739 removeAttribute([track, list], attrs); 3740 removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]); 3741 } 3742 3743 function update() { 3744 removeClass(root, rootClasses); 3745 removeClass(track, trackClasses); 3746 rootClasses = getClasses(CLASS_ROOT); 3747 trackClasses = getClasses(CLASS_TRACK); 3748 addClass(root, rootClasses); 3749 addClass(track, trackClasses); 3750 setAttribute(root, ARIA_LABEL, options.label); 3751 setAttribute(root, ARIA_LABELLEDBY, options.labelledby); 3752 } 3753 3754 function collect() { 3755 track = find("." + CLASS_TRACK); 3756 list = child(track, "." + CLASS_LIST); 3757 assert(track && list, "A track/list element is missing."); 3758 push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")")); 3759 forOwn({ 3760 arrows: CLASS_ARROWS, 3761 pagination: CLASS_PAGINATION, 3762 prev: CLASS_ARROW_PREV, 3763 next: CLASS_ARROW_NEXT, 3764 bar: CLASS_PROGRESS_BAR, 3765 toggle: CLASS_TOGGLE 3766 }, function (className, key) { 3767 elements[key] = find("." + className); 3768 }); 3769 assign(elements, { 3770 root: root, 3771 track: track, 3772 list: list, 3773 slides: slides 3774 }); 3775 } 3776 3777 function init() { 3778 var id = root.id || uniqueId(PROJECT_CODE); 3779 var role = options.role; 3780 root.id = id; 3781 track.id = track.id || id + "-track"; 3782 list.id = list.id || id + "-list"; 3783 3784 if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) { 3785 setAttribute(root, ROLE, role); 3786 } 3787 3788 setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel); 3789 setAttribute(list, ROLE, "presentation"); 3790 } 3791 3792 function find(selector) { 3793 var elm = query(root, selector); 3794 return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0; 3795 } 3796 3797 function getClasses(base) { 3798 return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE]; 3799 } 3800 3801 return assign(elements, { 3802 setup: setup, 3803 mount: mount, 3804 destroy: destroy 3805 }); 3806} 3807 3808var SLIDE = "slide"; 3809var LOOP = "loop"; 3810var FADE = "fade"; 3811 3812function Slide$1(Splide2, index, slideIndex, slide) { 3813 var event = EventInterface(Splide2); 3814 var on = event.on, 3815 emit = event.emit, 3816 bind = event.bind; 3817 var Components = Splide2.Components, 3818 root = Splide2.root, 3819 options = Splide2.options; 3820 var isNavigation = options.isNavigation, 3821 updateOnMove = options.updateOnMove, 3822 i18n = options.i18n, 3823 pagination = options.pagination, 3824 slideFocus = options.slideFocus; 3825 var resolve = Components.Direction.resolve; 3826 var styles = getAttribute(slide, "style"); 3827 var label = getAttribute(slide, ARIA_LABEL); 3828 var isClone = slideIndex > -1; 3829 var container = child(slide, "." + CLASS_CONTAINER); 3830 var destroyed; 3831 3832 function mount() { 3833 if (!isClone) { 3834 slide.id = root.id + "-slide" + pad(index + 1); 3835 setAttribute(slide, ROLE, pagination ? "tabpanel" : "group"); 3836 setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide); 3837 setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length])); 3838 } 3839 3840 listen(); 3841 } 3842 3843 function listen() { 3844 bind(slide, "click", apply(emit, EVENT_CLICK, self)); 3845 bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self)); 3846 on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update); 3847 on(EVENT_NAVIGATION_MOUNTED, initNavigation); 3848 3849 if (updateOnMove) { 3850 on(EVENT_MOVE, onMove); 3851 } 3852 } 3853 3854 function destroy() { 3855 destroyed = true; 3856 event.destroy(); 3857 removeClass(slide, STATUS_CLASSES); 3858 removeAttribute(slide, ALL_ATTRIBUTES); 3859 setAttribute(slide, "style", styles); 3860 setAttribute(slide, ARIA_LABEL, label || ""); 3861 } 3862 3863 function initNavigation() { 3864 var controls = Splide2.splides.map(function (target) { 3865 var Slide2 = target.splide.Components.Slides.getAt(index); 3866 return Slide2 ? Slide2.slide.id : ""; 3867 }).join(" "); 3868 setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1)); 3869 setAttribute(slide, ARIA_CONTROLS, controls); 3870 setAttribute(slide, ROLE, slideFocus ? "button" : ""); 3871 slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION); 3872 } 3873 3874 function onMove() { 3875 if (!destroyed) { 3876 update(); 3877 } 3878 } 3879 3880 function update() { 3881 if (!destroyed) { 3882 var curr = Splide2.index; 3883 updateActivity(); 3884 updateVisibility(); 3885 toggleClass(slide, CLASS_PREV, index === curr - 1); 3886 toggleClass(slide, CLASS_NEXT, index === curr + 1); 3887 } 3888 } 3889 3890 function updateActivity() { 3891 var active = isActive(); 3892 3893 if (active !== hasClass(slide, CLASS_ACTIVE)) { 3894 toggleClass(slide, CLASS_ACTIVE, active); 3895 setAttribute(slide, ARIA_CURRENT, isNavigation && active || ""); 3896 emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self); 3897 } 3898 } 3899 3900 function updateVisibility() { 3901 var visible = isVisible(); 3902 var hidden = !visible && (!isActive() || isClone); 3903 3904 if (!Splide2.state.is([MOVING, SCROLLING])) { 3905 setAttribute(slide, ARIA_HIDDEN, hidden || ""); 3906 } 3907 3908 setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : ""); 3909 3910 if (slideFocus) { 3911 setAttribute(slide, TAB_INDEX, hidden ? -1 : 0); 3912 } 3913 3914 if (visible !== hasClass(slide, CLASS_VISIBLE)) { 3915 toggleClass(slide, CLASS_VISIBLE, visible); 3916 emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self); 3917 } 3918 3919 if (!visible && document.activeElement === slide) { 3920 var Slide2 = Components.Slides.getAt(Splide2.index); 3921 Slide2 && focus(Slide2.slide); 3922 } 3923 } 3924 3925 function style$1(prop, value, useContainer) { 3926 style(useContainer && container || slide, prop, value); 3927 } 3928 3929 function isActive() { 3930 var curr = Splide2.index; 3931 return curr === index || options.cloneStatus && curr === slideIndex; 3932 } 3933 3934 function isVisible() { 3935 if (Splide2.is(FADE)) { 3936 return isActive(); 3937 } 3938 3939 var trackRect = rect(Components.Elements.track); 3940 var slideRect = rect(slide); 3941 var left = resolve("left", true); 3942 var right = resolve("right", true); 3943 return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]); 3944 } 3945 3946 function isWithin(from, distance) { 3947 var diff = abs(from - index); 3948 3949 if (!isClone && (options.rewind || Splide2.is(LOOP))) { 3950 diff = min(diff, Splide2.length - diff); 3951 } 3952 3953 return diff <= distance; 3954 } 3955 3956 var self = { 3957 index: index, 3958 slideIndex: slideIndex, 3959 slide: slide, 3960 container: container, 3961 isClone: isClone, 3962 mount: mount, 3963 destroy: destroy, 3964 update: update, 3965 style: style$1, 3966 isWithin: isWithin 3967 }; 3968 return self; 3969} 3970 3971function Slides(Splide2, Components2, options) { 3972 var _EventInterface2 = EventInterface(Splide2), 3973 on = _EventInterface2.on, 3974 emit = _EventInterface2.emit, 3975 bind = _EventInterface2.bind; 3976 3977 var _Components2$Elements = Components2.Elements, 3978 slides = _Components2$Elements.slides, 3979 list = _Components2$Elements.list; 3980 var Slides2 = []; 3981 3982 function mount() { 3983 init(); 3984 on(EVENT_REFRESH, destroy); 3985 on(EVENT_REFRESH, init); 3986 } 3987 3988 function init() { 3989 slides.forEach(function (slide, index) { 3990 register(slide, index, -1); 3991 }); 3992 } 3993 3994 function destroy() { 3995 forEach$1(function (Slide2) { 3996 Slide2.destroy(); 3997 }); 3998 empty(Slides2); 3999 } 4000 4001 function update() { 4002 forEach$1(function (Slide2) { 4003 Slide2.update(); 4004 }); 4005 } 4006 4007 function register(slide, index, slideIndex) { 4008 var object = Slide$1(Splide2, index, slideIndex, slide); 4009 object.mount(); 4010 Slides2.push(object); 4011 Slides2.sort(function (Slide1, Slide2) { 4012 return Slide1.index - Slide2.index; 4013 }); 4014 } 4015 4016 function get(excludeClones) { 4017 return excludeClones ? filter(function (Slide2) { 4018 return !Slide2.isClone; 4019 }) : Slides2; 4020 } 4021 4022 function getIn(page) { 4023 var Controller = Components2.Controller; 4024 var index = Controller.toIndex(page); 4025 var max = Controller.hasFocus() ? 1 : options.perPage; 4026 return filter(function (Slide2) { 4027 return between(Slide2.index, index, index + max - 1); 4028 }); 4029 } 4030 4031 function getAt(index) { 4032 return filter(index)[0]; 4033 } 4034 4035 function add(items, index) { 4036 forEach(items, function (slide) { 4037 if (isString(slide)) { 4038 slide = parseHtml(slide); 4039 } 4040 4041 if (isHTMLElement(slide)) { 4042 var ref = slides[index]; 4043 ref ? before(slide, ref) : append(list, slide); 4044 addClass(slide, options.classes.slide); 4045 observeImages(slide, apply(emit, EVENT_RESIZE)); 4046 } 4047 }); 4048 emit(EVENT_REFRESH); 4049 } 4050 4051 function remove$1(matcher) { 4052 remove(filter(matcher).map(function (Slide2) { 4053 return Slide2.slide; 4054 })); 4055 emit(EVENT_REFRESH); 4056 } 4057 4058 function forEach$1(iteratee, excludeClones) { 4059 get(excludeClones).forEach(iteratee); 4060 } 4061 4062 function filter(matcher) { 4063 return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) { 4064 return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index); 4065 }); 4066 } 4067 4068 function style(prop, value, useContainer) { 4069 forEach$1(function (Slide2) { 4070 Slide2.style(prop, value, useContainer); 4071 }); 4072 } 4073 4074 function observeImages(elm, callback) { 4075 var images = queryAll(elm, "img"); 4076 var length = images.length; 4077 4078 if (length) { 4079 images.forEach(function (img) { 4080 bind(img, "load error", function () { 4081 if (! --length) { 4082 callback(); 4083 } 4084 }); 4085 }); 4086 } else { 4087 callback(); 4088 } 4089 } 4090 4091 function getLength(excludeClones) { 4092 return excludeClones ? slides.length : Slides2.length; 4093 } 4094 4095 function isEnough() { 4096 return Slides2.length > options.perPage; 4097 } 4098 4099 return { 4100 mount: mount, 4101 destroy: destroy, 4102 update: update, 4103 register: register, 4104 get: get, 4105 getIn: getIn, 4106 getAt: getAt, 4107 add: add, 4108 remove: remove$1, 4109 forEach: forEach$1, 4110 filter: filter, 4111 style: style, 4112 getLength: getLength, 4113 isEnough: isEnough 4114 }; 4115} 4116 4117function Layout(Splide2, Components2, options) { 4118 var _EventInterface3 = EventInterface(Splide2), 4119 on = _EventInterface3.on, 4120 bind = _EventInterface3.bind, 4121 emit = _EventInterface3.emit; 4122 4123 var Slides = Components2.Slides; 4124 var resolve = Components2.Direction.resolve; 4125 var _Components2$Elements2 = Components2.Elements, 4126 root = _Components2$Elements2.root, 4127 track = _Components2$Elements2.track, 4128 list = _Components2$Elements2.list; 4129 var getAt = Slides.getAt, 4130 styleSlides = Slides.style; 4131 var vertical; 4132 var rootRect; 4133 var overflow; 4134 4135 function mount() { 4136 init(); 4137 bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE))); 4138 on([EVENT_UPDATED, EVENT_REFRESH], init); 4139 on(EVENT_RESIZE, resize); 4140 } 4141 4142 function init() { 4143 vertical = options.direction === TTB; 4144 style(root, "maxWidth", unit(options.width)); 4145 style(track, resolve("paddingLeft"), cssPadding(false)); 4146 style(track, resolve("paddingRight"), cssPadding(true)); 4147 resize(true); 4148 } 4149 4150 function resize(force) { 4151 var newRect = rect(root); 4152 4153 if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) { 4154 style(track, "height", cssTrackHeight()); 4155 styleSlides(resolve("marginRight"), unit(options.gap)); 4156 styleSlides("width", cssSlideWidth()); 4157 styleSlides("height", cssSlideHeight(), true); 4158 rootRect = newRect; 4159 emit(EVENT_RESIZED); 4160 4161 if (overflow !== (overflow = isOverflow())) { 4162 toggleClass(root, CLASS_OVERFLOW, overflow); 4163 emit(EVENT_OVERFLOW, overflow); 4164 } 4165 } 4166 } 4167 4168 function cssPadding(right) { 4169 var padding = options.padding; 4170 var prop = resolve(right ? "right" : "left"); 4171 return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; 4172 } 4173 4174 function cssTrackHeight() { 4175 var height = ""; 4176 4177 if (vertical) { 4178 height = cssHeight(); 4179 assert(height, "height or heightRatio is missing."); 4180 height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")"; 4181 } 4182 4183 return height; 4184 } 4185 4186 function cssHeight() { 4187 return unit(options.height || rect(list).width * options.heightRatio); 4188 } 4189 4190 function cssSlideWidth() { 4191 return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize()); 4192 } 4193 4194 function cssSlideHeight() { 4195 return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight()); 4196 } 4197 4198 function cssSlideSize() { 4199 var gap = unit(options.gap); 4200 return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; 4201 } 4202 4203 function listSize() { 4204 return rect(list)[resolve("width")]; 4205 } 4206 4207 function slideSize(index, withoutGap) { 4208 var Slide = getAt(index || 0); 4209 return Slide ? rect(Slide.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0; 4210 } 4211 4212 function totalSize(index, withoutGap) { 4213 var Slide = getAt(index); 4214 4215 if (Slide) { 4216 var right = rect(Slide.slide)[resolve("right")]; 4217 var left = rect(list)[resolve("left")]; 4218 return abs(right - left) + (withoutGap ? 0 : getGap()); 4219 } 4220 4221 return 0; 4222 } 4223 4224 function sliderSize(withoutGap) { 4225 return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap); 4226 } 4227 4228 function getGap() { 4229 var Slide = getAt(0); 4230 return Slide && parseFloat(style(Slide.slide, resolve("marginRight"))) || 0; 4231 } 4232 4233 function getPadding(right) { 4234 return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0; 4235 } 4236 4237 function isOverflow() { 4238 return Splide2.is(FADE) || sliderSize(true) > listSize(); 4239 } 4240 4241 return { 4242 mount: mount, 4243 resize: resize, 4244 listSize: listSize, 4245 slideSize: slideSize, 4246 sliderSize: sliderSize, 4247 totalSize: totalSize, 4248 getPadding: getPadding, 4249 isOverflow: isOverflow 4250 }; 4251} 4252 4253var MULTIPLIER = 2; 4254 4255function Clones(Splide2, Components2, options) { 4256 var event = EventInterface(Splide2); 4257 var on = event.on; 4258 var Elements = Components2.Elements, 4259 Slides = Components2.Slides; 4260 var resolve = Components2.Direction.resolve; 4261 var clones = []; 4262 var cloneCount; 4263 4264 function mount() { 4265 on(EVENT_REFRESH, remount); 4266 on([EVENT_UPDATED, EVENT_RESIZE], observe); 4267 4268 if (cloneCount = computeCloneCount()) { 4269 generate(cloneCount); 4270 Components2.Layout.resize(true); 4271 } 4272 } 4273 4274 function remount() { 4275 destroy(); 4276 mount(); 4277 } 4278 4279 function destroy() { 4280 remove(clones); 4281 empty(clones); 4282 event.destroy(); 4283 } 4284 4285 function observe() { 4286 var count = computeCloneCount(); 4287 4288 if (cloneCount !== count) { 4289 if (cloneCount < count || !count) { 4290 event.emit(EVENT_REFRESH); 4291 } 4292 } 4293 } 4294 4295 function generate(count) { 4296 var slides = Slides.get().slice(); 4297 var length = slides.length; 4298 4299 if (length) { 4300 while (slides.length < count) { 4301 push(slides, slides); 4302 } 4303 4304 push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) { 4305 var isHead = index < count; 4306 var clone = cloneDeep(Slide.slide, index); 4307 isHead ? before(clone, slides[0].slide) : append(Elements.list, clone); 4308 push(clones, clone); 4309 Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index); 4310 }); 4311 } 4312 } 4313 4314 function cloneDeep(elm, index) { 4315 var clone = elm.cloneNode(true); 4316 addClass(clone, options.classes.clone); 4317 clone.id = Splide2.root.id + "-clone" + pad(index + 1); 4318 return clone; 4319 } 4320 4321 function computeCloneCount() { 4322 var clones2 = options.clones; 4323 4324 if (!Splide2.is(LOOP)) { 4325 clones2 = 0; 4326 } else if (isUndefined(clones2)) { 4327 var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0); 4328 var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize); 4329 clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER; 4330 } 4331 4332 return clones2; 4333 } 4334 4335 return { 4336 mount: mount, 4337 destroy: destroy 4338 }; 4339} 4340 4341function Move(Splide2, Components2, options) { 4342 var _EventInterface4 = EventInterface(Splide2), 4343 on = _EventInterface4.on, 4344 emit = _EventInterface4.emit; 4345 4346 var set = Splide2.state.set; 4347 var _Components2$Layout = Components2.Layout, 4348 slideSize = _Components2$Layout.slideSize, 4349 getPadding = _Components2$Layout.getPadding, 4350 totalSize = _Components2$Layout.totalSize, 4351 listSize = _Components2$Layout.listSize, 4352 sliderSize = _Components2$Layout.sliderSize; 4353 var _Components2$Directio = Components2.Direction, 4354 resolve = _Components2$Directio.resolve, 4355 orient = _Components2$Directio.orient; 4356 var _Components2$Elements3 = Components2.Elements, 4357 list = _Components2$Elements3.list, 4358 track = _Components2$Elements3.track; 4359 var Transition; 4360 4361 function mount() { 4362 Transition = Components2.Transition; 4363 on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition); 4364 } 4365 4366 function reposition() { 4367 if (!Components2.Controller.isBusy()) { 4368 Components2.Scroll.cancel(); 4369 jump(Splide2.index); 4370 Components2.Slides.update(); 4371 } 4372 } 4373 4374 function move(dest, index, prev, callback) { 4375 if (dest !== index && canShift(dest > prev)) { 4376 cancel(); 4377 translate(shift(getPosition(), dest > prev), true); 4378 } 4379 4380 set(MOVING); 4381 emit(EVENT_MOVE, index, prev, dest); 4382 Transition.start(index, function () { 4383 set(IDLE); 4384 emit(EVENT_MOVED, index, prev, dest); 4385 callback && callback(); 4386 }); 4387 } 4388 4389 function jump(index) { 4390 translate(toPosition(index, true)); 4391 } 4392 4393 function translate(position, preventLoop) { 4394 if (!Splide2.is(FADE)) { 4395 var destination = preventLoop ? position : loop(position); 4396 style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)"); 4397 position !== destination && emit(EVENT_SHIFTED); 4398 } 4399 } 4400 4401 function loop(position) { 4402 if (Splide2.is(LOOP)) { 4403 var index = toIndex(position); 4404 var exceededMax = index > Components2.Controller.getEnd(); 4405 var exceededMin = index < 0; 4406 4407 if (exceededMin || exceededMax) { 4408 position = shift(position, exceededMax); 4409 } 4410 } 4411 4412 return position; 4413 } 4414 4415 function shift(position, backwards) { 4416 var excess = position - getLimit(backwards); 4417 var size = sliderSize(); 4418 position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1); 4419 return position; 4420 } 4421 4422 function cancel() { 4423 translate(getPosition(), true); 4424 Transition.cancel(); 4425 } 4426 4427 function toIndex(position) { 4428 var Slides = Components2.Slides.get(); 4429 var index = 0; 4430 var minDistance = Infinity; 4431 4432 for (var i = 0; i < Slides.length; i++) { 4433 var slideIndex = Slides[i].index; 4434 var distance = abs(toPosition(slideIndex, true) - position); 4435 4436 if (distance <= minDistance) { 4437 minDistance = distance; 4438 index = slideIndex; 4439 } else { 4440 break; 4441 } 4442 } 4443 4444 return index; 4445 } 4446 4447 function toPosition(index, trimming) { 4448 var position = orient(totalSize(index - 1) - offset(index)); 4449 return trimming ? trim(position) : position; 4450 } 4451 4452 function getPosition() { 4453 var left = resolve("left"); 4454 return rect(list)[left] - rect(track)[left] + orient(getPadding(false)); 4455 } 4456 4457 function trim(position) { 4458 if (options.trimSpace && Splide2.is(SLIDE)) { 4459 position = clamp(position, 0, orient(sliderSize(true) - listSize())); 4460 } 4461 4462 return position; 4463 } 4464 4465 function offset(index) { 4466 var focus = options.focus; 4467 return focus === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0; 4468 } 4469 4470 function getLimit(max) { 4471 return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace); 4472 } 4473 4474 function canShift(backwards) { 4475 var shifted = orient(shift(getPosition(), backwards)); 4476 return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")]; 4477 } 4478 4479 function exceededLimit(max, position) { 4480 position = isUndefined(position) ? getPosition() : position; 4481 var exceededMin = max !== true && orient(position) < orient(getLimit(false)); 4482 var exceededMax = max !== false && orient(position) > orient(getLimit(true)); 4483 return exceededMin || exceededMax; 4484 } 4485 4486 return { 4487 mount: mount, 4488 move: move, 4489 jump: jump, 4490 translate: translate, 4491 shift: shift, 4492 cancel: cancel, 4493 toIndex: toIndex, 4494 toPosition: toPosition, 4495 getPosition: getPosition, 4496 getLimit: getLimit, 4497 exceededLimit: exceededLimit, 4498 reposition: reposition 4499 }; 4500} 4501 4502function Controller(Splide2, Components2, options) { 4503 var _EventInterface5 = EventInterface(Splide2), 4504 on = _EventInterface5.on, 4505 emit = _EventInterface5.emit; 4506 4507 var Move = Components2.Move; 4508 var getPosition = Move.getPosition, 4509 getLimit = Move.getLimit, 4510 toPosition = Move.toPosition; 4511 var _Components2$Slides = Components2.Slides, 4512 isEnough = _Components2$Slides.isEnough, 4513 getLength = _Components2$Slides.getLength; 4514 var omitEnd = options.omitEnd; 4515 var isLoop = Splide2.is(LOOP); 4516 var isSlide = Splide2.is(SLIDE); 4517 var getNext = apply(getAdjacent, false); 4518 var getPrev = apply(getAdjacent, true); 4519 var currIndex = options.start || 0; 4520 var endIndex; 4521 var prevIndex = currIndex; 4522 var slideCount; 4523 var perMove; 4524 var perPage; 4525 4526 function mount() { 4527 init(); 4528 on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init); 4529 on(EVENT_RESIZED, onResized); 4530 } 4531 4532 function init() { 4533 slideCount = getLength(true); 4534 perMove = options.perMove; 4535 perPage = options.perPage; 4536 endIndex = getEnd(); 4537 var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1); 4538 4539 if (index !== currIndex) { 4540 currIndex = index; 4541 Move.reposition(); 4542 } 4543 } 4544 4545 function onResized() { 4546 if (endIndex !== getEnd()) { 4547 emit(EVENT_END_INDEX_CHANGED); 4548 } 4549 } 4550 4551 function go(control, allowSameIndex, callback) { 4552 if (!isBusy()) { 4553 var dest = parse(control); 4554 var index = loop(dest); 4555 4556 if (index > -1 && (allowSameIndex || index !== currIndex)) { 4557 setIndex(index); 4558 Move.move(dest, index, prevIndex, callback); 4559 } 4560 } 4561 } 4562 4563 function scroll(destination, duration, snap, callback) { 4564 Components2.Scroll.scroll(destination, duration, snap, function () { 4565 var index = loop(Move.toIndex(getPosition())); 4566 setIndex(omitEnd ? min(index, endIndex) : index); 4567 callback && callback(); 4568 }); 4569 } 4570 4571 function parse(control) { 4572 var index = currIndex; 4573 4574 if (isString(control)) { 4575 var _ref = control.match(/([+\
vendor: 10,171 bytes, lines 4575-4965
4575\-<>])(\\d+)?/) || [], 4576 indicator = _ref[1], 4577 number = _ref[2]; 4578 4579 if (indicator === "+" || indicator === "-") { 4580 index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex); 4581 } else if (indicator === ">") { 4582 index = number ? toIndex(+number) : getNext(true); 4583 } else if (indicator === "<") { 4584 index = getPrev(true); 4585 } 4586 } else { 4587 index = isLoop ? control : clamp(control, 0, endIndex); 4588 } 4589 4590 return index; 4591 } 4592 4593 function getAdjacent(prev, destination) { 4594 var number = perMove || (hasFocus() ? 1 : perPage); 4595 var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus())); 4596 4597 if (dest === -1 && isSlide) { 4598 if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) { 4599 return prev ? 0 : endIndex; 4600 } 4601 } 4602 4603 return destination ? dest : loop(dest); 4604 } 4605 4606 function computeDestIndex(dest, from, snapPage) { 4607 if (isEnough() || hasFocus()) { 4608 var index = computeMovableDestIndex(dest); 4609 4610 if (index !== dest) { 4611 from = dest; 4612 dest = index; 4613 snapPage = false; 4614 } 4615 4616 if (dest < 0 || dest > endIndex) { 4617 if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) { 4618 dest = toIndex(toPage(dest)); 4619 } else { 4620 if (isLoop) { 4621 dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest; 4622 } else if (options.rewind) { 4623 dest = dest < 0 ? endIndex : 0; 4624 } else { 4625 dest = -1; 4626 } 4627 } 4628 } else { 4629 if (snapPage && dest !== from) { 4630 dest = toIndex(toPage(from) + (dest < from ? -1 : 1)); 4631 } 4632 } 4633 } else { 4634 dest = -1; 4635 } 4636 4637 return dest; 4638 } 4639 4640 function computeMovableDestIndex(dest) { 4641 if (isSlide && options.trimSpace === "move" && dest !== currIndex) { 4642 var position = getPosition(); 4643 4644 while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) { 4645 dest < currIndex ? --dest : ++dest; 4646 } 4647 } 4648 4649 return dest; 4650 } 4651 4652 function loop(index) { 4653 return isLoop ? (index + slideCount) % slideCount || 0 : index; 4654 } 4655 4656 function getEnd() { 4657 var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage); 4658 4659 while (omitEnd && end-- > 0) { 4660 if (toPosition(slideCount - 1, true) !== toPosition(end, true)) { 4661 end++; 4662 break; 4663 } 4664 } 4665 4666 return clamp(end, 0, slideCount - 1); 4667 } 4668 4669 function toIndex(page) { 4670 return clamp(hasFocus() ? page : perPage * page, 0, endIndex); 4671 } 4672 4673 function toPage(index) { 4674 return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage); 4675 } 4676 4677 function toDest(destination) { 4678 var closest = Move.toIndex(destination); 4679 return isSlide ? clamp(closest, 0, endIndex) : closest; 4680 } 4681 4682 function setIndex(index) { 4683 if (index !== currIndex) { 4684 prevIndex = currIndex; 4685 currIndex = index; 4686 } 4687 } 4688 4689 function getIndex(prev) { 4690 return prev ? prevIndex : currIndex; 4691 } 4692 4693 function hasFocus() { 4694 return !isUndefined(options.focus) || options.isNavigation; 4695 } 4696 4697 function isBusy() { 4698 return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition; 4699 } 4700 4701 return { 4702 mount: mount, 4703 go: go, 4704 scroll: scroll, 4705 getNext: getNext, 4706 getPrev: getPrev, 4707 getAdjacent: getAdjacent, 4708 getEnd: getEnd, 4709 setIndex: setIndex, 4710 getIndex: getIndex, 4711 toIndex: toIndex, 4712 toPage: toPage, 4713 toDest: toDest, 4714 hasFocus: hasFocus, 4715 isBusy: isBusy 4716 }; 4717} 4718 4719var XML_NAME_SPACE = "http://www.w3.org/2000/svg"; 4720var PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z"; 4721var SIZE = 40; 4722 4723function Arrows(Splide2, Components2, options) { 4724 var event = EventInterface(Splide2); 4725 var on = event.on, 4726 bind = event.bind, 4727 emit = event.emit; 4728 var classes = options.classes, 4729 i18n = options.i18n; 4730 var Elements = Components2.Elements, 4731 Controller = Components2.Controller; 4732 var placeholder = Elements.arrows, 4733 track = Elements.track; 4734 var wrapper = placeholder; 4735 var prev = Elements.prev; 4736 var next = Elements.next; 4737 var created; 4738 var wrapperClasses; 4739 var arrows = {}; 4740 4741 function mount() { 4742 init(); 4743 on(EVENT_UPDATED, remount); 4744 } 4745 4746 function remount() { 4747 destroy(); 4748 mount(); 4749 } 4750 4751 function init() { 4752 var enabled = options.arrows; 4753 4754 if (enabled && !(prev && next)) { 4755 createArrows(); 4756 } 4757 4758 if (prev && next) { 4759 assign(arrows, { 4760 prev: prev, 4761 next: next 4762 }); 4763 display(wrapper, enabled ? "" : "none"); 4764 addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction); 4765 4766 if (enabled) { 4767 listen(); 4768 update(); 4769 setAttribute([prev, next], ARIA_CONTROLS, track.id); 4770 emit(EVENT_ARROWS_MOUNTED, prev, next); 4771 } 4772 } 4773 } 4774 4775 function destroy() { 4776 event.destroy(); 4777 removeClass(wrapper, wrapperClasses); 4778 4779 if (created) { 4780 remove(placeholder ? [prev, next] : wrapper); 4781 prev = next = null; 4782 } else { 4783 removeAttribute([prev, next], ALL_ATTRIBUTES); 4784 } 4785 } 4786 4787 function listen() { 4788 on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update); 4789 bind(next, "click", apply(go, ">")); 4790 bind(prev, "click", apply(go, "<")); 4791 } 4792 4793 function go(control) { 4794 Controller.go(control, true); 4795 } 4796 4797 function createArrows() { 4798 wrapper = placeholder || create("div", classes.arrows); 4799 prev = createArrow(true); 4800 next = createArrow(false); 4801 created = true; 4802 append(wrapper, [prev, next]); 4803 !placeholder && before(wrapper, track); 4804 } 4805 4806 function createArrow(prev2) { 4807 var arrow = "<button class=\\"" + classes.arrow + " " + (prev2 ? classes.prev : classes.next) + "\\" type=\\"button\\"><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\" focusable=\\"false\\"><path d=\\"" + (options.arrowPath || PATH) + "\\" />"; 4808 return parseHtml(arrow); 4809 } 4810 4811 function update() { 4812 if (prev && next) { 4813 var index = Splide2.index; 4814 var prevIndex = Controller.getPrev(); 4815 var nextIndex = Controller.getNext(); 4816 var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev; 4817 var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next; 4818 prev.disabled = prevIndex < 0; 4819 next.disabled = nextIndex < 0; 4820 setAttribute(prev, ARIA_LABEL, prevLabel); 4821 setAttribute(next, ARIA_LABEL, nextLabel); 4822 emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex); 4823 } 4824 } 4825 4826 return { 4827 arrows: arrows, 4828 mount: mount, 4829 destroy: destroy, 4830 update: update 4831 }; 4832} 4833 4834var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval"; 4835 4836function Autoplay(Splide2, Components2, options) { 4837 var _EventInterface6 = EventInterface(Splide2), 4838 on = _EventInterface6.on, 4839 bind = _EventInterface6.bind, 4840 emit = _EventInterface6.emit; 4841 4842 var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame); 4843 var isPaused = interval.isPaused; 4844 var Elements = Components2.Elements, 4845 _Components2$Elements4 = Components2.Elements, 4846 root = _Components2$Elements4.root, 4847 toggle = _Components2$Elements4.toggle; 4848 var autoplay = options.autoplay; 4849 var hovered; 4850 var focused; 4851 var stopped = autoplay === "pause"; 4852 4853 function mount() { 4854 if (autoplay) { 4855 listen(); 4856 toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id); 4857 stopped || play(); 4858 update(); 4859 } 4860 } 4861 4862 function listen() { 4863 if (options.pauseOnHover) { 4864 bind(root, "mouseenter mouseleave", function (e) { 4865 hovered = e.type === "mouseenter"; 4866 autoToggle(); 4867 }); 4868 } 4869 4870 if (options.pauseOnFocus) { 4871 bind(root, "focusin focusout", function (e) { 4872 focused = e.type === "focusin"; 4873 autoToggle(); 4874 }); 4875 } 4876 4877 if (toggle) { 4878 bind(toggle, "click", function () { 4879 stopped ? play() : pause(true); 4880 }); 4881 } 4882 4883 on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind); 4884 on(EVENT_MOVE, onMove); 4885 } 4886 4887 function play() { 4888 if (isPaused() && Components2.Slides.isEnough()) { 4889 interval.start(!options.resetProgress); 4890 focused = hovered = stopped = false; 4891 update(); 4892 emit(EVENT_AUTOPLAY_PLAY); 4893 } 4894 } 4895 4896 function pause(stop) { 4897 if (stop === void 0) { 4898 stop = true; 4899 } 4900 4901 stopped = !!stop; 4902 update(); 4903 4904 if (!isPaused()) { 4905 interval.pause(); 4906 emit(EVENT_AUTOPLAY_PAUSE); 4907 } 4908 } 4909 4910 function autoToggle() { 4911 if (!stopped) { 4912 hovered || focused ? pause(false) : play(); 4913 } 4914 } 4915 4916 function update() { 4917 if (toggle) { 4918 toggleClass(toggle, CLASS_ACTIVE, !stopped); 4919 setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? "play" : "pause"]); 4920 } 4921 } 4922 4923 function onAnimationFrame(rate) { 4924 var bar = Elements.bar; 4925 bar && style(bar, "width", rate * 100 + "%"); 4926 emit(EVENT_AUTOPLAY_PLAYING, rate); 4927 } 4928 4929 function onMove(index) { 4930 var Slide = Components2.Slides.getAt(index); 4931 interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval); 4932 } 4933 4934 return { 4935 mount: mount, 4936 destroy: interval.cancel, 4937 play: play, 4938 pause: pause, 4939 isPaused: isPaused 4940 }; 4941} 4942 4943function Cover(Splide2, Components2, options) { 4944 var _EventInterface7 = EventInterface(Splide2), 4945 on = _EventInterface7.on; 4946 4947 function mount() { 4948 if (options.cover) { 4949 on(EVENT_LAZYLOAD_LOADED, apply(toggle, true)); 4950 on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true)); 4951 } 4952 } 4953 4954 function cover(cover2) { 4955 Components2.Slides.forEach(function (Slide) { 4956 var img = child(Slide.container || Slide.slide, "img"); 4957 4958 if (img && img.src) { 4959 toggle(cover2, img, Slide); 4960 } 4961 }); 4962 } 4963 4964 function toggle(cover2, img, Slide) { 4965 Slide.style("background", cover2 ? "center/cover no-repeat url(\\"" + img.src + "\
vendor: 37,645 bytes, lines 4965-6424
4965\")" : "", true); 4966 display(img, cover2 ? "none" : ""); 4967 } 4968 4969 return { 4970 mount: mount, 4971 destroy: apply(cover, false) 4972 }; 4973} 4974 4975var BOUNCE_DIFF_THRESHOLD = 10; 4976var BOUNCE_DURATION = 600; 4977var FRICTION_FACTOR = 0.6; 4978var BASE_VELOCITY = 1.5; 4979var MIN_DURATION = 800; 4980 4981function Scroll(Splide2, Components2, options) { 4982 var _EventInterface8 = EventInterface(Splide2), 4983 on = _EventInterface8.on, 4984 emit = _EventInterface8.emit; 4985 4986 var set = Splide2.state.set; 4987 var Move = Components2.Move; 4988 var getPosition = Move.getPosition, 4989 getLimit = Move.getLimit, 4990 exceededLimit = Move.exceededLimit, 4991 translate = Move.translate; 4992 var isSlide = Splide2.is(SLIDE); 4993 var interval; 4994 var callback; 4995 var friction = 1; 4996 4997 function mount() { 4998 on(EVENT_MOVE, clear); 4999 on([EVENT_UPDATED, EVENT_REFRESH], cancel); 5000 } 5001 5002 function scroll(destination, duration, snap, onScrolled, noConstrain) { 5003 var from = getPosition(); 5004 clear(); 5005 5006 if (snap && (!isSlide || !exceededLimit())) { 5007 var size = Components2.Layout.sliderSize(); 5008 var offset = sign(destination) * size * floor(abs(destination) / size) || 0; 5009 destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset; 5010 } 5011 5012 var noDistance = approximatelyEqual(from, destination, 1); 5013 friction = 1; 5014 duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION); 5015 callback = onScrolled; 5016 interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1); 5017 set(SCROLLING); 5018 emit(EVENT_SCROLL); 5019 interval.start(); 5020 } 5021 5022 function onEnd() { 5023 set(IDLE); 5024 callback && callback(); 5025 emit(EVENT_SCROLLED); 5026 } 5027 5028 function update(from, to, noConstrain, rate) { 5029 var position = getPosition(); 5030 var target = from + (to - from) * easing(rate); 5031 var diff = (target - position) * friction; 5032 translate(position + diff); 5033 5034 if (isSlide && !noConstrain && exceededLimit()) { 5035 friction *= FRICTION_FACTOR; 5036 5037 if (abs(diff) < BOUNCE_DIFF_THRESHOLD) { 5038 scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true); 5039 } 5040 } 5041 } 5042 5043 function clear() { 5044 if (interval) { 5045 interval.cancel(); 5046 } 5047 } 5048 5049 function cancel() { 5050 if (interval && !interval.isPaused()) { 5051 clear(); 5052 onEnd(); 5053 } 5054 } 5055 5056 function easing(t) { 5057 var easingFunc = options.easingFunc; 5058 return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4); 5059 } 5060 5061 return { 5062 mount: mount, 5063 destroy: clear, 5064 scroll: scroll, 5065 cancel: cancel 5066 }; 5067} 5068 5069var SCROLL_LISTENER_OPTIONS = { 5070 passive: false, 5071 capture: true 5072}; 5073 5074function Drag(Splide2, Components2, options) { 5075 var _EventInterface9 = EventInterface(Splide2), 5076 on = _EventInterface9.on, 5077 emit = _EventInterface9.emit, 5078 bind = _EventInterface9.bind, 5079 unbind = _EventInterface9.unbind; 5080 5081 var state = Splide2.state; 5082 var Move = Components2.Move, 5083 Scroll = Components2.Scroll, 5084 Controller = Components2.Controller, 5085 track = Components2.Elements.track, 5086 reduce = Components2.Media.reduce; 5087 var _Components2$Directio2 = Components2.Direction, 5088 resolve = _Components2$Directio2.resolve, 5089 orient = _Components2$Directio2.orient; 5090 var getPosition = Move.getPosition, 5091 exceededLimit = Move.exceededLimit; 5092 var basePosition; 5093 var baseEvent; 5094 var prevBaseEvent; 5095 var isFree; 5096 var dragging; 5097 var exceeded = false; 5098 var clickPrevented; 5099 var disabled; 5100 var target; 5101 5102 function mount() { 5103 bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS); 5104 bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS); 5105 bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS); 5106 bind(track, "click", onClick, { 5107 capture: true 5108 }); 5109 bind(track, "dragstart", prevent); 5110 on([EVENT_MOUNTED, EVENT_UPDATED], init); 5111 } 5112 5113 function init() { 5114 var drag = options.drag; 5115 disable(!drag); 5116 isFree = drag === "free"; 5117 } 5118 5119 function onPointerDown(e) { 5120 clickPrevented = false; 5121 5122 if (!disabled) { 5123 var isTouch = isTouchEvent(e); 5124 5125 if (isDraggable(e.target) && (isTouch || !e.button)) { 5126 if (!Controller.isBusy()) { 5127 target = isTouch ? track : window; 5128 dragging = state.is([MOVING, SCROLLING]); 5129 prevBaseEvent = null; 5130 bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS); 5131 bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS); 5132 Move.cancel(); 5133 Scroll.cancel(); 5134 save(e); 5135 } else { 5136 prevent(e, true); 5137 } 5138 } 5139 } 5140 } 5141 5142 function onPointerMove(e) { 5143 if (!state.is(DRAGGING)) { 5144 state.set(DRAGGING); 5145 emit(EVENT_DRAG); 5146 } 5147 5148 if (e.cancelable) { 5149 if (dragging) { 5150 Move.translate(basePosition + constrain(diffCoord(e))); 5151 var expired = diffTime(e) > LOG_INTERVAL; 5152 var hasExceeded = exceeded !== (exceeded = exceededLimit()); 5153 5154 if (expired || hasExceeded) { 5155 save(e); 5156 } 5157 5158 clickPrevented = true; 5159 emit(EVENT_DRAGGING); 5160 prevent(e); 5161 } else if (isSliderDirection(e)) { 5162 dragging = shouldStart(e); 5163 prevent(e); 5164 } 5165 } 5166 } 5167 5168 function onPointerUp(e) { 5169 if (state.is(DRAGGING)) { 5170 state.set(IDLE); 5171 emit(EVENT_DRAGGED); 5172 } 5173 5174 if (dragging) { 5175 move(e); 5176 prevent(e); 5177 } 5178 5179 unbind(target, POINTER_MOVE_EVENTS, onPointerMove); 5180 unbind(target, POINTER_UP_EVENTS, onPointerUp); 5181 dragging = false; 5182 } 5183 5184 function onClick(e) { 5185 if (!disabled && clickPrevented) { 5186 prevent(e, true); 5187 } 5188 } 5189 5190 function save(e) { 5191 prevBaseEvent = baseEvent; 5192 baseEvent = e; 5193 basePosition = getPosition(); 5194 } 5195 5196 function move(e) { 5197 var velocity = computeVelocity(e); 5198 var destination = computeDestination(velocity); 5199 var rewind = options.rewind && options.rewindByDrag; 5200 reduce(false); 5201 5202 if (isFree) { 5203 Controller.scroll(destination, 0, options.snap); 5204 } else if (Splide2.is(FADE)) { 5205 Controller.go(orient(sign(velocity)) < 0 ? rewind ? "<" : "-" : rewind ? ">" : "+"); 5206 } else if (Splide2.is(SLIDE) && exceeded && rewind) { 5207 Controller.go(exceededLimit(true) ? ">" : "<"); 5208 } else { 5209 Controller.go(Controller.toDest(destination), true); 5210 } 5211 5212 reduce(true); 5213 } 5214 5215 function shouldStart(e) { 5216 var thresholds = options.dragMinThreshold; 5217 var isObj = isObject(thresholds); 5218 var mouse = isObj && thresholds.mouse || 0; 5219 var touch = (isObj ? thresholds.touch : +thresholds) || 10; 5220 return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse); 5221 } 5222 5223 function isSliderDirection(e) { 5224 return abs(diffCoord(e)) > abs(diffCoord(e, true)); 5225 } 5226 5227 function computeVelocity(e) { 5228 if (Splide2.is(LOOP) || !exceeded) { 5229 var time = diffTime(e); 5230 5231 if (time && time < LOG_INTERVAL) { 5232 return diffCoord(e) / time; 5233 } 5234 } 5235 5236 return 0; 5237 } 5238 5239 function computeDestination(velocity) { 5240 return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1)); 5241 } 5242 5243 function diffCoord(e, orthogonal) { 5244 return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal); 5245 } 5246 5247 function diffTime(e) { 5248 return timeOf(e) - timeOf(getBaseEvent(e)); 5249 } 5250 5251 function getBaseEvent(e) { 5252 return baseEvent === e && prevBaseEvent || baseEvent; 5253 } 5254 5255 function coordOf(e, orthogonal) { 5256 return (isTouchEvent(e) ? e.changedTouches[0] : e)["page" + resolve(orthogonal ? "Y" : "X")]; 5257 } 5258 5259 function constrain(diff) { 5260 return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1); 5261 } 5262 5263 function isDraggable(target2) { 5264 var noDrag = options.noDrag; 5265 return !matches(target2, "." + CLASS_PAGINATION_PAGE + ", ." + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag)); 5266 } 5267 5268 function isTouchEvent(e) { 5269 return typeof TouchEvent !== "undefined" && e instanceof TouchEvent; 5270 } 5271 5272 function isDragging() { 5273 return dragging; 5274 } 5275 5276 function disable(value) { 5277 disabled = value; 5278 } 5279 5280 return { 5281 mount: mount, 5282 disable: disable, 5283 isDragging: isDragging 5284 }; 5285} 5286 5287var NORMALIZATION_MAP = { 5288 Spacebar: " ", 5289 Right: ARROW_RIGHT, 5290 Left: ARROW_LEFT, 5291 Up: ARROW_UP, 5292 Down: ARROW_DOWN 5293}; 5294 5295function normalizeKey(key) { 5296 key = isString(key) ? key : key.key; 5297 return NORMALIZATION_MAP[key] || key; 5298} 5299 5300var KEYBOARD_EVENT = "keydown"; 5301 5302function Keyboard(Splide2, Components2, options) { 5303 var _EventInterface10 = EventInterface(Splide2), 5304 on = _EventInterface10.on, 5305 bind = _EventInterface10.bind, 5306 unbind = _EventInterface10.unbind; 5307 5308 var root = Splide2.root; 5309 var resolve = Components2.Direction.resolve; 5310 var target; 5311 var disabled; 5312 5313 function mount() { 5314 init(); 5315 on(EVENT_UPDATED, destroy); 5316 on(EVENT_UPDATED, init); 5317 on(EVENT_MOVE, onMove); 5318 } 5319 5320 function init() { 5321 var keyboard = options.keyboard; 5322 5323 if (keyboard) { 5324 target = keyboard === "global" ? window : root; 5325 bind(target, KEYBOARD_EVENT, onKeydown); 5326 } 5327 } 5328 5329 function destroy() { 5330 unbind(target, KEYBOARD_EVENT); 5331 } 5332 5333 function disable(value) { 5334 disabled = value; 5335 } 5336 5337 function onMove() { 5338 var _disabled = disabled; 5339 disabled = true; 5340 nextTick(function () { 5341 disabled = _disabled; 5342 }); 5343 } 5344 5345 function onKeydown(e) { 5346 if (!disabled) { 5347 var key = normalizeKey(e); 5348 5349 if (key === resolve(ARROW_LEFT)) { 5350 Splide2.go("<"); 5351 } else if (key === resolve(ARROW_RIGHT)) { 5352 Splide2.go(">"); 5353 } 5354 } 5355 } 5356 5357 return { 5358 mount: mount, 5359 destroy: destroy, 5360 disable: disable 5361 }; 5362} 5363 5364var SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-lazy"; 5365var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset"; 5366var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]"; 5367 5368function LazyLoad(Splide2, Components2, options) { 5369 var _EventInterface11 = EventInterface(Splide2), 5370 on = _EventInterface11.on, 5371 off = _EventInterface11.off, 5372 bind = _EventInterface11.bind, 5373 emit = _EventInterface11.emit; 5374 5375 var isSequential = options.lazyLoad === "sequential"; 5376 var events = [EVENT_MOVED, EVENT_SCROLLED]; 5377 var entries = []; 5378 5379 function mount() { 5380 if (options.lazyLoad) { 5381 init(); 5382 on(EVENT_REFRESH, init); 5383 } 5384 } 5385 5386 function init() { 5387 empty(entries); 5388 register(); 5389 5390 if (isSequential) { 5391 loadNext(); 5392 } else { 5393 off(events); 5394 on(events, check); 5395 check(); 5396 } 5397 } 5398 5399 function register() { 5400 Components2.Slides.forEach(function (Slide) { 5401 queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) { 5402 var src = getAttribute(img, SRC_DATA_ATTRIBUTE); 5403 var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE); 5404 5405 if (src !== img.src || srcset !== img.srcset) { 5406 var className = options.classes.spinner; 5407 var parent = img.parentElement; 5408 var spinner = child(parent, "." + className) || create("span", className, parent); 5409 entries.push([img, Slide, spinner]); 5410 img.src || display(img, "none"); 5411 } 5412 }); 5413 }); 5414 } 5415 5416 function check() { 5417 entries = entries.filter(function (data) { 5418 var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1; 5419 return data[1].isWithin(Splide2.index, distance) ? load(data) : true; 5420 }); 5421 entries.length || off(events); 5422 } 5423 5424 function load(data) { 5425 var img = data[0]; 5426 addClass(data[1].slide, CLASS_LOADING); 5427 bind(img, "load error", apply(onLoad, data)); 5428 setAttribute(img, "src", getAttribute(img, SRC_DATA_ATTRIBUTE)); 5429 setAttribute(img, "srcset", getAttribute(img, SRCSET_DATA_ATTRIBUTE)); 5430 removeAttribute(img, SRC_DATA_ATTRIBUTE); 5431 removeAttribute(img, SRCSET_DATA_ATTRIBUTE); 5432 } 5433 5434 function onLoad(data, e) { 5435 var img = data[0], 5436 Slide = data[1]; 5437 removeClass(Slide.slide, CLASS_LOADING); 5438 5439 if (e.type !== "error") { 5440 remove(data[2]); 5441 display(img, ""); 5442 emit(EVENT_LAZYLOAD_LOADED, img, Slide); 5443 emit(EVENT_RESIZE); 5444 } 5445 5446 isSequential && loadNext(); 5447 } 5448 5449 function loadNext() { 5450 entries.length && load(entries.shift()); 5451 } 5452 5453 return { 5454 mount: mount, 5455 destroy: apply(empty, entries), 5456 check: check 5457 }; 5458} 5459 5460function Pagination(Splide2, Components2, options) { 5461 var event = EventInterface(Splide2); 5462 var on = event.on, 5463 emit = event.emit, 5464 bind = event.bind; 5465 var Slides = Components2.Slides, 5466 Elements = Components2.Elements, 5467 Controller = Components2.Controller; 5468 var hasFocus = Controller.hasFocus, 5469 getIndex = Controller.getIndex, 5470 go = Controller.go; 5471 var resolve = Components2.Direction.resolve; 5472 var placeholder = Elements.pagination; 5473 var items = []; 5474 var list; 5475 var paginationClasses; 5476 5477 function mount() { 5478 destroy(); 5479 on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount); 5480 var enabled = options.pagination; 5481 placeholder && display(placeholder, enabled ? "" : "none"); 5482 5483 if (enabled) { 5484 on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update); 5485 createPagination(); 5486 update(); 5487 emit(EVENT_PAGINATION_MOUNTED, { 5488 list: list, 5489 items: items 5490 }, getAt(Splide2.index)); 5491 } 5492 } 5493 5494 function destroy() { 5495 if (list) { 5496 remove(placeholder ? slice(list.children) : list); 5497 removeClass(list, paginationClasses); 5498 empty(items); 5499 list = null; 5500 } 5501 5502 event.destroy(); 5503 } 5504 5505 function createPagination() { 5506 var length = Splide2.length; 5507 var classes = options.classes, 5508 i18n = options.i18n, 5509 perPage = options.perPage; 5510 var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage); 5511 list = placeholder || create("ul", classes.pagination, Elements.track.parentElement); 5512 addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection()); 5513 setAttribute(list, ROLE, "tablist"); 5514 setAttribute(list, ARIA_LABEL, i18n.select); 5515 setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? "vertical" : ""); 5516 5517 for (var i = 0; i < max; i++) { 5518 var li = create("li", null, list); 5519 var button = create("button", { 5520 class: classes.page, 5521 type: "button" 5522 }, li); 5523 var controls = Slides.getIn(i).map(function (Slide) { 5524 return Slide.slide.id; 5525 }); 5526 var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX; 5527 bind(button, "click", apply(onClick, i)); 5528 5529 if (options.paginationKeyboard) { 5530 bind(button, "keydown", apply(onKeydown, i)); 5531 } 5532 5533 setAttribute(li, ROLE, "presentation"); 5534 setAttribute(button, ROLE, "tab"); 5535 setAttribute(button, ARIA_CONTROLS, controls.join(" ")); 5536 setAttribute(button, ARIA_LABEL, format(text, i + 1)); 5537 setAttribute(button, TAB_INDEX, -1); 5538 items.push({ 5539 li: li, 5540 button: button, 5541 page: i 5542 }); 5543 } 5544 } 5545 5546 function onClick(page) { 5547 go(">" + page, true); 5548 } 5549 5550 function onKeydown(page, e) { 5551 var length = items.length; 5552 var key = normalizeKey(e); 5553 var dir = getDirection(); 5554 var nextPage = -1; 5555 5556 if (key === resolve(ARROW_RIGHT, false, dir)) { 5557 nextPage = ++page % length; 5558 } else if (key === resolve(ARROW_LEFT, false, dir)) { 5559 nextPage = (--page + length) % length; 5560 } else if (key === "Home") { 5561 nextPage = 0; 5562 } else if (key === "End") { 5563 nextPage = length - 1; 5564 } 5565 5566 var item = items[nextPage]; 5567 5568 if (item) { 5569 focus(item.button); 5570 go(">" + nextPage); 5571 prevent(e, true); 5572 } 5573 } 5574 5575 function getDirection() { 5576 return options.paginationDirection || options.direction; 5577 } 5578 5579 function getAt(index) { 5580 return items[Controller.toPage(index)]; 5581 } 5582 5583 function update() { 5584 var prev = getAt(getIndex(true)); 5585 var curr = getAt(getIndex()); 5586 5587 if (prev) { 5588 var button = prev.button; 5589 removeClass(button, CLASS_ACTIVE); 5590 removeAttribute(button, ARIA_SELECTED); 5591 setAttribute(button, TAB_INDEX, -1); 5592 } 5593 5594 if (curr) { 5595 var _button = curr.button; 5596 addClass(_button, CLASS_ACTIVE); 5597 setAttribute(_button, ARIA_SELECTED, true); 5598 setAttribute(_button, TAB_INDEX, ""); 5599 } 5600 5601 emit(EVENT_PAGINATION_UPDATED, { 5602 list: list, 5603 items: items 5604 }, prev, curr); 5605 } 5606 5607 return { 5608 items: items, 5609 mount: mount, 5610 destroy: destroy, 5611 getAt: getAt, 5612 update: update 5613 }; 5614} 5615 5616var TRIGGER_KEYS = [" ", "Enter"]; 5617 5618function Sync(Splide2, Components2, options) { 5619 var isNavigation = options.isNavigation, 5620 slideFocus = options.slideFocus; 5621 var events = []; 5622 5623 function mount() { 5624 Splide2.splides.forEach(function (target) { 5625 if (!target.isParent) { 5626 sync(Splide2, target.splide); 5627 sync(target.splide, Splide2); 5628 } 5629 }); 5630 5631 if (isNavigation) { 5632 navigate(); 5633 } 5634 } 5635 5636 function destroy() { 5637 events.forEach(function (event) { 5638 event.destroy(); 5639 }); 5640 empty(events); 5641 } 5642 5643 function remount() { 5644 destroy(); 5645 mount(); 5646 } 5647 5648 function sync(splide, target) { 5649 var event = EventInterface(splide); 5650 event.on(EVENT_MOVE, function (index, prev, dest) { 5651 target.go(target.is(LOOP) ? dest : index); 5652 }); 5653 events.push(event); 5654 } 5655 5656 function navigate() { 5657 var event = EventInterface(Splide2); 5658 var on = event.on; 5659 on(EVENT_CLICK, onClick); 5660 on(EVENT_SLIDE_KEYDOWN, onKeydown); 5661 on([EVENT_MOUNTED, EVENT_UPDATED], update); 5662 events.push(event); 5663 event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides); 5664 } 5665 5666 function update() { 5667 setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? "vertical" : ""); 5668 } 5669 5670 function onClick(Slide) { 5671 Splide2.go(Slide.index); 5672 } 5673 5674 function onKeydown(Slide, e) { 5675 if (includes(TRIGGER_KEYS, normalizeKey(e))) { 5676 onClick(Slide); 5677 prevent(e); 5678 } 5679 } 5680 5681 return { 5682 setup: apply(Components2.Media.set, { 5683 slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus 5684 }, true), 5685 mount: mount, 5686 destroy: destroy, 5687 remount: remount 5688 }; 5689} 5690 5691function Wheel(Splide2, Components2, options) { 5692 var _EventInterface12 = EventInterface(Splide2), 5693 bind = _EventInterface12.bind; 5694 5695 var lastTime = 0; 5696 5697 function mount() { 5698 if (options.wheel) { 5699 bind(Components2.Elements.track, "wheel", onWheel, SCROLL_LISTENER_OPTIONS); 5700 } 5701 } 5702 5703 function onWheel(e) { 5704 if (e.cancelable) { 5705 var deltaY = e.deltaY; 5706 var backwards = deltaY < 0; 5707 var timeStamp = timeOf(e); 5708 5709 var _min = options.wheelMinThreshold || 0; 5710 5711 var sleep = options.wheelSleep || 0; 5712 5713 if (abs(deltaY) > _min && timeStamp - lastTime > sleep) { 5714 Splide2.go(backwards ? "<" : ">"); 5715 lastTime = timeStamp; 5716 } 5717 5718 shouldPrevent(backwards) && prevent(e); 5719 } 5720 } 5721 5722 function shouldPrevent(backwards) { 5723 return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1; 5724 } 5725 5726 return { 5727 mount: mount 5728 }; 5729} 5730 5731var SR_REMOVAL_DELAY = 90; 5732 5733function Live(Splide2, Components2, options) { 5734 var _EventInterface13 = EventInterface(Splide2), 5735 on = _EventInterface13.on; 5736 5737 var track = Components2.Elements.track; 5738 var enabled = options.live && !options.isNavigation; 5739 var sr = create("span", CLASS_SR); 5740 var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false)); 5741 5742 function mount() { 5743 if (enabled) { 5744 disable(!Components2.Autoplay.isPaused()); 5745 setAttribute(track, ARIA_ATOMIC, true); 5746 sr.textContent = "\\u2026"; 5747 on(EVENT_AUTOPLAY_PLAY, apply(disable, true)); 5748 on(EVENT_AUTOPLAY_PAUSE, apply(disable, false)); 5749 on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true)); 5750 } 5751 } 5752 5753 function toggle(active) { 5754 setAttribute(track, ARIA_BUSY, active); 5755 5756 if (active) { 5757 append(track, sr); 5758 interval.start(); 5759 } else { 5760 remove(sr); 5761 interval.cancel(); 5762 } 5763 } 5764 5765 function destroy() { 5766 removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]); 5767 remove(sr); 5768 } 5769 5770 function disable(disabled) { 5771 if (enabled) { 5772 setAttribute(track, ARIA_LIVE, disabled ? "off" : "polite"); 5773 } 5774 } 5775 5776 return { 5777 mount: mount, 5778 disable: disable, 5779 destroy: destroy 5780 }; 5781} 5782 5783var ComponentConstructors = /*#__PURE__*/Object.freeze({ 5784 __proto__: null, 5785 Media: Media, 5786 Direction: Direction, 5787 Elements: Elements, 5788 Slides: Slides, 5789 Layout: Layout, 5790 Clones: Clones, 5791 Move: Move, 5792 Controller: Controller, 5793 Arrows: Arrows, 5794 Autoplay: Autoplay, 5795 Cover: Cover, 5796 Scroll: Scroll, 5797 Drag: Drag, 5798 Keyboard: Keyboard, 5799 LazyLoad: LazyLoad, 5800 Pagination: Pagination, 5801 Sync: Sync, 5802 Wheel: Wheel, 5803 Live: Live 5804}); 5805var I18N = { 5806 prev: "Previous slide", 5807 next: "Next slide", 5808 first: "Go to first slide", 5809 last: "Go to last slide", 5810 slideX: "Go to slide %s", 5811 pageX: "Go to page %s", 5812 play: "Start autoplay", 5813 pause: "Pause autoplay", 5814 carousel: "carousel", 5815 slide: "slide", 5816 select: "Select a slide to show", 5817 slideLabel: "%s of %s" 5818}; 5819var DEFAULTS = { 5820 type: "slide", 5821 role: "region", 5822 speed: 400, 5823 perPage: 1, 5824 cloneStatus: true, 5825 arrows: true, 5826 pagination: true, 5827 paginationKeyboard: true, 5828 interval: 5e3, 5829 pauseOnHover: true, 5830 pauseOnFocus: true, 5831 resetProgress: true, 5832 easing: "cubic-bezier(0.25, 1, 0.5, 1)", 5833 drag: true, 5834 direction: "ltr", 5835 trimSpace: true, 5836 focusableNodes: "a, button, textarea, input, select, iframe", 5837 live: true, 5838 classes: CLASSES, 5839 i18n: I18N, 5840 reducedMotion: { 5841 speed: 0, 5842 rewindSpeed: 0, 5843 autoplay: "pause" 5844 } 5845}; 5846 5847function Fade(Splide2, Components2, options) { 5848 var Slides = Components2.Slides; 5849 5850 function mount() { 5851 EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init); 5852 } 5853 5854 function init() { 5855 Slides.forEach(function (Slide) { 5856 Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)"); 5857 }); 5858 } 5859 5860 function start(index, done) { 5861 Slides.style("transition", "opacity " + options.speed + "ms " + options.easing); 5862 nextTick(done); 5863 } 5864 5865 return { 5866 mount: mount, 5867 start: start, 5868 cancel: noop 5869 }; 5870} 5871 5872function Slide(Splide2, Components2, options) { 5873 var Move = Components2.Move, 5874 Controller = Components2.Controller, 5875 Scroll = Components2.Scroll; 5876 var list = Components2.Elements.list; 5877 var transition = apply(style, list, "transition"); 5878 var endCallback; 5879 5880 function mount() { 5881 EventInterface(Splide2).bind(list, "transitionend", function (e) { 5882 if (e.target === list && endCallback) { 5883 cancel(); 5884 endCallback(); 5885 } 5886 }); 5887 } 5888 5889 function start(index, done) { 5890 var destination = Move.toPosition(index, true); 5891 var position = Move.getPosition(); 5892 var speed = getSpeed(index); 5893 5894 if (abs(destination - position) >= 1 && speed >= 1) { 5895 if (options.useScroll) { 5896 Scroll.scroll(destination, speed, false, done); 5897 } else { 5898 transition("transform " + speed + "ms " + options.easing); 5899 Move.translate(destination, true); 5900 endCallback = done; 5901 } 5902 } else { 5903 Move.jump(index); 5904 done(); 5905 } 5906 } 5907 5908 function cancel() { 5909 transition(""); 5910 Scroll.cancel(); 5911 } 5912 5913 function getSpeed(index) { 5914 var rewindSpeed = options.rewindSpeed; 5915 5916 if (Splide2.is(SLIDE) && rewindSpeed) { 5917 var prev = Controller.getIndex(true); 5918 var end = Controller.getEnd(); 5919 5920 if (prev === 0 && index >= end || prev >= end && index === 0) { 5921 return rewindSpeed; 5922 } 5923 } 5924 5925 return options.speed; 5926 } 5927 5928 return { 5929 mount: mount, 5930 start: start, 5931 cancel: cancel 5932 }; 5933} 5934 5935var _Splide = /*#__PURE__*/function () { 5936 function _Splide(target, options) { 5937 this.event = EventInterface(); 5938 this.Components = {}; 5939 this.state = State(CREATED); 5940 this.splides = []; 5941 this._o = {}; 5942 this._E = {}; 5943 var root = isString(target) ? query(document, target) : target; 5944 assert(root, root + " is invalid."); 5945 this.root = root; 5946 options = merge({ 5947 label: getAttribute(root, ARIA_LABEL) || "", 5948 labelledby: getAttribute(root, ARIA_LABELLEDBY) || "" 5949 }, DEFAULTS, _Splide.defaults, options || {}); 5950 5951 try { 5952 merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE))); 5953 } catch (e) { 5954 assert(false, "Invalid JSON"); 5955 } 5956 5957 this._o = Object.create(merge({}, options)); 5958 } 5959 5960 var _proto = _Splide.prototype; 5961 5962 _proto.mount = function mount(Extensions, Transition) { 5963 var _this = this; 5964 5965 var state = this.state, 5966 Components2 = this.Components; 5967 assert(state.is([CREATED, DESTROYED]), "Already mounted!"); 5968 state.set(CREATED); 5969 this._C = Components2; 5970 this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide); 5971 this._E = Extensions || this._E; 5972 var Constructors = assign({}, ComponentConstructors, this._E, { 5973 Transition: this._T 5974 }); 5975 forOwn(Constructors, function (Component, key) { 5976 var component = Component(_this, Components2, _this._o); 5977 Components2[key] = component; 5978 component.setup && component.setup(); 5979 }); 5980 forOwn(Components2, function (component) { 5981 component.mount && component.mount(); 5982 }); 5983 this.emit(EVENT_MOUNTED); 5984 addClass(this.root, CLASS_INITIALIZED); 5985 state.set(IDLE); 5986 this.emit(EVENT_READY); 5987 return this; 5988 }; 5989 5990 _proto.sync = function sync(splide) { 5991 this.splides.push({ 5992 splide: splide 5993 }); 5994 splide.splides.push({ 5995 splide: this, 5996 isParent: true 5997 }); 5998 5999 if (this.state.is(IDLE)) { 6000 this._C.Sync.remount(); 6001 6002 splide.Components.Sync.remount(); 6003 } 6004 6005 return this; 6006 }; 6007 6008 _proto.go = function go(control) { 6009 this._C.Controller.go(control); 6010 6011 return this; 6012 }; 6013 6014 _proto.on = function on(events, callback) { 6015 this.event.on(events, callback); 6016 return this; 6017 }; 6018 6019 _proto.off = function off(events) { 6020 this.event.off(events); 6021 return this; 6022 }; 6023 6024 _proto.emit = function emit(event) { 6025 var _this$event; 6026 6027 (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1))); 6028 6029 return this; 6030 }; 6031 6032 _proto.add = function add(slides, index) { 6033 this._C.Slides.add(slides, index); 6034 6035 return this; 6036 }; 6037 6038 _proto.remove = function remove(matcher) { 6039 this._C.Slides.remove(matcher); 6040 6041 return this; 6042 }; 6043 6044 _proto.is = function is(type) { 6045 return this._o.type === type; 6046 }; 6047 6048 _proto.refresh = function refresh() { 6049 this.emit(EVENT_REFRESH); 6050 return this; 6051 }; 6052 6053 _proto.destroy = function destroy(completely) { 6054 if (completely === void 0) { 6055 completely = true; 6056 } 6057 6058 var event = this.event, 6059 state = this.state; 6060 6061 if (state.is(CREATED)) { 6062 EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely)); 6063 } else { 6064 forOwn(this._C, function (component) { 6065 component.destroy && component.destroy(completely); 6066 }, true); 6067 event.emit(EVENT_DESTROY); 6068 event.destroy(); 6069 completely && empty(this.splides); 6070 state.set(DESTROYED); 6071 } 6072 6073 return this; 6074 }; 6075 6076 _createClass(_Splide, [{ 6077 key: "options", 6078 get: function get() { 6079 return this._o; 6080 }, 6081 set: function set(options) { 6082 this._C.Media.set(options, true, true); 6083 } 6084 }, { 6085 key: "length", 6086 get: function get() { 6087 return this._C.Slides.getLength(true); 6088 } 6089 }, { 6090 key: "index", 6091 get: function get() { 6092 return this._C.Controller.getIndex(); 6093 } 6094 }]); 6095 6096 return _Splide; 6097}(); 6098 6099var Splide = _Splide; 6100Splide.defaults = {}; 6101Splide.STATES = STATES; 6102var CLASS_RENDERED = "is-rendered"; 6103var RENDERER_DEFAULT_CONFIG = { 6104 listTag: "ul", 6105 slideTag: "li" 6106}; 6107 6108var Style = /*#__PURE__*/function () { 6109 function Style(id, options) { 6110 this.styles = {}; 6111 this.id = id; 6112 this.options = options; 6113 } 6114 6115 var _proto2 = Style.prototype; 6116 6117 _proto2.rule = function rule(selector, prop, value, breakpoint) { 6118 breakpoint = breakpoint || "default"; 6119 var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {}; 6120 var styles = selectors[selector] = selectors[selector] || {}; 6121 styles[prop] = value; 6122 }; 6123 6124 _proto2.build = function build() { 6125 var _this2 = this; 6126 6127 var css = ""; 6128 6129 if (this.styles.default) { 6130 css += this.buildSelectors(this.styles.default); 6131 } 6132 6133 Object.keys(this.styles).sort(function (n, m) { 6134 return _this2.options.mediaQuery === "min" ? +n - +m : +m - +n; 6135 }).forEach(function (breakpoint) { 6136 if (breakpoint !== "default") { 6137 css += "@media screen and (max-width: " + breakpoint + "px) {"; 6138 css += _this2.buildSelectors(_this2.styles[breakpoint]); 6139 css += "}"; 6140 } 6141 }); 6142 return css; 6143 }; 6144 6145 _proto2.buildSelectors = function buildSelectors(selectors) { 6146 var _this3 = this; 6147 6148 var css = ""; 6149 forOwn(selectors, function (styles, selector) { 6150 selector = ("#" + _this3.id + " " + selector).trim(); 6151 css += selector + " {"; 6152 forOwn(styles, function (value, prop) { 6153 if (value || value === 0) { 6154 css += prop + ": " + value + ";"; 6155 } 6156 }); 6157 css += "}"; 6158 }); 6159 return css; 6160 }; 6161 6162 return Style; 6163}(); 6164 6165var SplideRenderer = /*#__PURE__*/function () { 6166 function SplideRenderer(contents, options, config, defaults) { 6167 this.slides = []; 6168 this.options = {}; 6169 this.breakpoints = []; 6170 merge(DEFAULTS, defaults || {}); 6171 merge(merge(this.options, DEFAULTS), options || {}); 6172 this.contents = contents; 6173 this.config = assign({}, RENDERER_DEFAULT_CONFIG, config || {}); 6174 this.id = this.config.id || uniqueId("splide"); 6175 this.Style = new Style(this.id, this.options); 6176 this.Direction = Direction(null, null, this.options); 6177 assert(this.contents.length, "Provide at least 1 content."); 6178 this.init(); 6179 } 6180 6181 SplideRenderer.clean = function clean(splide) { 6182 var _EventInterface14 = EventInterface(splide), 6183 on = _EventInterface14.on; 6184 6185 var root = splide.root; 6186 var clones = queryAll(root, "." + CLASS_CLONE); 6187 on(EVENT_MOUNTED, function () { 6188 remove(child(root, "style")); 6189 }); 6190 remove(clones); 6191 }; 6192 6193 var _proto3 = SplideRenderer.prototype; 6194 6195 _proto3.init = function init() { 6196 this.parseBreakpoints(); 6197 this.initSlides(); 6198 this.registerRootStyles(); 6199 this.registerTrackStyles(); 6200 this.registerSlideStyles(); 6201 this.registerListStyles(); 6202 }; 6203 6204 _proto3.initSlides = function initSlides() { 6205 var _this4 = this; 6206 6207 push(this.slides, this.contents.map(function (content, index) { 6208 content = isString(content) ? { 6209 html: content 6210 } : content; 6211 content.styles = content.styles || {}; 6212 content.attrs = content.attrs || {}; 6213 6214 _this4.cover(content); 6215 6216 var classes = _this4.options.classes.slide + " " + (index === 0 ? CLASS_ACTIVE : ""); 6217 assign(content.attrs, { 6218 class: (classes + " " + (content.attrs.class || "")).trim(), 6219 style: _this4.buildStyles(content.styles) 6220 }); 6221 return content; 6222 })); 6223 6224 if (this.isLoop()) { 6225 this.generateClones(this.slides); 6226 } 6227 }; 6228 6229 _proto3.registerRootStyles = function registerRootStyles() { 6230 var _this5 = this; 6231 6232 this.breakpoints.forEach(function (_ref2) { 6233 var width = _ref2[0], 6234 options = _ref2[1]; 6235 6236 _this5.Style.rule(" ", "max-width", unit(options.width), width); 6237 }); 6238 }; 6239 6240 _proto3.registerTrackStyles = function registerTrackStyles() { 6241 var _this6 = this; 6242 6243 var Style2 = this.Style; 6244 var selector = "." + CLASS_TRACK; 6245 this.breakpoints.forEach(function (_ref3) { 6246 var width = _ref3[0], 6247 options = _ref3[1]; 6248 Style2.rule(selector, _this6.resolve("paddingLeft"), _this6.cssPadding(options, false), width); 6249 Style2.rule(selector, _this6.resolve("paddingRight"), _this6.cssPadding(options, true), width); 6250 Style2.rule(selector, "height", _this6.cssTrackHeight(options), width); 6251 }); 6252 }; 6253 6254 _proto3.registerListStyles = function registerListStyles() { 6255 var _this7 = this; 6256 6257 var Style2 = this.Style; 6258 var selector = "." + CLASS_LIST; 6259 this.breakpoints.forEach(function (_ref4) { 6260 var width = _ref4[0], 6261 options = _ref4[1]; 6262 Style2.rule(selector, "transform", _this7.buildTranslate(options), width); 6263 6264 if (!_this7.cssSlideHeight(options)) { 6265 Style2.rule(selector, "aspect-ratio", _this7.cssAspectRatio(options), width); 6266 } 6267 }); 6268 }; 6269 6270 _proto3.registerSlideStyles = function registerSlideStyles() { 6271 var _this8 = this; 6272 6273 var Style2 = this.Style; 6274 var selector = "." + CLASS_SLIDE; 6275 this.breakpoints.forEach(function (_ref5) { 6276 var width = _ref5[0], 6277 options = _ref5[1]; 6278 Style2.rule(selector, "width", _this8.cssSlideWidth(options), width); 6279 Style2.rule(selector, "height", _this8.cssSlideHeight(options) || "100%", width); 6280 Style2.rule(selector, _this8.resolve("marginRight"), unit(options.gap) || "0px", width); 6281 Style2.rule(selector + " > img", "display", options.cover ? "none" : "inline", width); 6282 }); 6283 }; 6284 6285 _proto3.buildTranslate = function buildTranslate(options) { 6286 var _this$Direction = this.Direction, 6287 resolve = _this$Direction.resolve, 6288 orient = _this$Direction.orient; 6289 var values = []; 6290 values.push(this.cssOffsetClones(options)); 6291 values.push(this.cssOffsetGaps(options)); 6292 6293 if (this.isCenter(options)) { 6294 values.push(this.buildCssValue(orient(-50), "%")); 6295 values.push.apply(values, this.cssOffsetCenter(options)); 6296 } 6297 6298 return values.filter(Boolean).map(function (value) { 6299 return "translate" + resolve("X") + "(" + value + ")"; 6300 }).join(" "); 6301 }; 6302 6303 _proto3.cssOffsetClones = function cssOffsetClones(options) { 6304 var _this$Direction2 = this.Direction, 6305 resolve = _this$Direction2.resolve, 6306 orient = _this$Direction2.orient; 6307 var cloneCount = this.getCloneCount(); 6308 6309 if (this.isFixedWidth(options)) { 6310 var _this$parseCssValue = this.parseCssValue(options[resolve("fixedWidth")]), 6311 value = _this$parseCssValue.value, 6312 unit2 = _this$parseCssValue.unit; 6313 6314 return this.buildCssValue(orient(value) * cloneCount, unit2); 6315 } 6316 6317 var percent = 100 * cloneCount / options.perPage; 6318 return orient(percent) + "%"; 6319 }; 6320 6321 _proto3.cssOffsetCenter = function cssOffsetCenter(options) { 6322 var _this$Direction3 = this.Direction, 6323 resolve = _this$Direction3.resolve, 6324 orient = _this$Direction3.orient; 6325 6326 if (this.isFixedWidth(options)) { 6327 var _this$parseCssValue2 = this.parseCssValue(options[resolve("fixedWidth")]), 6328 value = _this$parseCssValue2.value, 6329 unit2 = _this$parseCssValue2.unit; 6330 6331 return [this.buildCssValue(orient(value / 2), unit2)]; 6332 } 6333 6334 var values = []; 6335 var perPage = options.perPage, 6336 gap = options.gap; 6337 values.push(orient(50 / perPage) + "%"); 6338 6339 if (gap) { 6340 var _this$parseCssValue3 = this.parseCssValue(gap), 6341 _value = _this$parseCssValue3.value, 6342 _unit = _this$parseCssValue3.unit; 6343 6344 var gapOffset = (_value / perPage - _value) / 2; 6345 values.push(this.buildCssValue(orient(gapOffset), _unit)); 6346 } 6347 6348 return values; 6349 }; 6350 6351 _proto3.cssOffsetGaps = function cssOffsetGaps(options) { 6352 var cloneCount = this.getCloneCount(); 6353 6354 if (cloneCount && options.gap) { 6355 var orient = this.Direction.orient; 6356 6357 var _this$parseCssValue4 = this.parseCssValue(options.gap), 6358 value = _this$parseCssValue4.value, 6359 unit2 = _this$parseCssValue4.unit; 6360 6361 if (this.isFixedWidth(options)) { 6362 return this.buildCssValue(orient(value * cloneCount), unit2); 6363 } 6364 6365 var perPage = options.perPage; 6366 var gaps = cloneCount / perPage; 6367 return this.buildCssValue(orient(gaps * value), unit2); 6368 } 6369 6370 return ""; 6371 }; 6372 6373 _proto3.resolve = function resolve(prop) { 6374 return camelToKebab(this.Direction.resolve(prop)); 6375 }; 6376 6377 _proto3.cssPadding = function cssPadding(options, right) { 6378 var padding = options.padding; 6379 var prop = this.Direction.resolve(right ? "right" : "left", true); 6380 return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; 6381 }; 6382 6383 _proto3.cssTrackHeight = function cssTrackHeight(options) { 6384 var height = ""; 6385 6386 if (this.isVertical()) { 6387 height = this.cssHeight(options); 6388 assert(height, '"height" is missing.'); 6389 height = "calc(" + height + " - " + this.cssPadding(options, false) + " - " + this.cssPadding(options, true) + ")"; 6390 } 6391 6392 return height; 6393 }; 6394 6395 _proto3.cssHeight = function cssHeight(options) { 6396 return unit(options.height); 6397 }; 6398 6399 _proto3.cssSlideWidth = function cssSlideWidth(options) { 6400 return options.autoWidth ? "" : unit(options.fixedWidth) || (this.isVertical() ? "" : this.cssSlideSize(options)); 6401 }; 6402 6403 _proto3.cssSlideHeight = function cssSlideHeight(options) { 6404 return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? "" : this.cssSlideSize(options) : this.cssHeight(options)); 6405 }; 6406 6407 _proto3.cssSlideSize = function cssSlideSize(options) { 6408 var gap = unit(options.gap); 6409 return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; 6410 }; 6411 6412 _proto3.cssAspectRatio = function cssAspectRatio(options) { 6413 var heightRatio = options.heightRatio; 6414 return heightRatio ? "" + 1 / heightRatio : ""; 6415 }; 6416 6417 _proto3.buildCssValue = function buildCssValue(value, unit2) { 6418 return "" + value + unit2; 6419 }; 6420 6421 _proto3.parseCssValue = function parseCssValue(value) { 6422 if (isString(value)) { 6423 var number = parseFloat(value) || 0; 6424 var unit2 = value.replace(/\
6424\d*(\\.\\d*)?/, "") || "px"; 6425 return { 6426 value: number, 6427 unit: unit2 6428 }; 6429 } 6430 6431 return { 6432 value: value, 6433 unit: "px" 6434 }; 6435 }; 6436
vendor: 6,657 bytes, lines 6437-6625
6437 _proto3.parseBreakpoints = function parseBreakpoints() { 6438 var _this9 = this; 6439 6440 var breakpoints = this.options.breakpoints; 6441 this.breakpoints.push(["default", this.options]); 6442 6443 if (breakpoints) { 6444 forOwn(breakpoints, function (options, width) { 6445 _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]); 6446 }); 6447 } 6448 }; 6449 6450 _proto3.isFixedWidth = function isFixedWidth(options) { 6451 return !!options[this.Direction.resolve("fixedWidth")]; 6452 }; 6453 6454 _proto3.isLoop = function isLoop() { 6455 return this.options.type === LOOP; 6456 }; 6457 6458 _proto3.isCenter = function isCenter(options) { 6459 if (options.focus === "center") { 6460 if (this.isLoop()) { 6461 return true; 6462 } 6463 6464 if (this.options.type === SLIDE) { 6465 return !this.options.trimSpace; 6466 } 6467 } 6468 6469 return false; 6470 }; 6471 6472 _proto3.isVertical = function isVertical() { 6473 return this.options.direction === TTB; 6474 }; 6475 6476 _proto3.buildClasses = function buildClasses() { 6477 var options = this.options; 6478 return [CLASS_ROOT, CLASS_ROOT + "--" + options.type, CLASS_ROOT + "--" + options.direction, options.drag && CLASS_ROOT + "--draggable", options.isNavigation && CLASS_ROOT + "--nav", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(" "); 6479 }; 6480 6481 _proto3.buildAttrs = function buildAttrs(attrs) { 6482 var attr = ""; 6483 forOwn(attrs, function (value, key) { 6484 attr += value ? " " + camelToKebab(key) + "=\\"" + value + "\\"" : ""; 6485 }); 6486 return attr.trim(); 6487 }; 6488 6489 _proto3.buildStyles = function buildStyles(styles) { 6490 var style = ""; 6491 forOwn(styles, function (value, key) { 6492 style += " " + camelToKebab(key) + ":" + value + ";"; 6493 }); 6494 return style.trim(); 6495 }; 6496 6497 _proto3.renderSlides = function renderSlides() { 6498 var _this10 = this; 6499 6500 var tag = this.config.slideTag; 6501 return this.slides.map(function (content) { 6502 return "<" + tag + " " + _this10.buildAttrs(content.attrs) + ">" + (content.html || "") + "</" + tag + ">"; 6503 }).join(""); 6504 }; 6505 6506 _proto3.cover = function cover(content) { 6507 var styles = content.styles, 6508 _content$html = content.html, 6509 html = _content$html === void 0 ? "" : _content$html; 6510 6511 if (this.options.cover && !this.options.lazyLoad) { 6512 var src = html.match(/<img.*?src\\s*=\\s*(['"])(.+?)\\1.*?>/); 6513 6514 if (src && src[2]) { 6515 styles.background = "center/cover no-repeat url('" + src[2] + "')"; 6516 } 6517 } 6518 }; 6519 6520 _proto3.generateClones = function generateClones(contents) { 6521 var classes = this.options.classes; 6522 var count = this.getCloneCount(); 6523 var slides = contents.slice(); 6524 6525 while (slides.length < count) { 6526 push(slides, slides); 6527 } 6528 6529 push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) { 6530 var attrs = assign({}, content.attrs, { 6531 class: content.attrs.class + " " + classes.clone 6532 }); 6533 var clone = assign({}, content, { 6534 attrs: attrs 6535 }); 6536 index < count ? contents.unshift(clone) : contents.push(clone); 6537 }); 6538 }; 6539 6540 _proto3.getCloneCount = function getCloneCount() { 6541 if (this.isLoop()) { 6542 var options = this.options; 6543 6544 if (options.clones) { 6545 return options.clones; 6546 } 6547 6548 var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) { 6549 var options2 = _ref6[1]; 6550 return options2.perPage; 6551 })); 6552 return perPage * ((options.flickMaxPages || 1) + 1); 6553 } 6554 6555 return 0; 6556 }; 6557 6558 _proto3.renderArrows = function renderArrows() { 6559 var html = ""; 6560 html += "<div class=\\"" + this.options.classes.arrows + "\\">"; 6561 html += this.renderArrow(true); 6562 html += this.renderArrow(false); 6563 html += "</div>"; 6564 return html; 6565 }; 6566 6567 _proto3.renderArrow = function renderArrow(prev) { 6568 var _this$options = this.options, 6569 classes = _this$options.classes, 6570 i18n = _this$options.i18n; 6571 var attrs = { 6572 class: classes.arrow + " " + (prev ? classes.prev : classes.next), 6573 type: "button", 6574 ariaLabel: prev ? i18n.prev : i18n.next 6575 }; 6576 return "<button " + this.buildAttrs(attrs) + "><svg xmlns=\\"" + XML_NAME_SPACE + "\\" viewBox=\\"0 0 " + SIZE + " " + SIZE + "\\" width=\\"" + SIZE + "\\" height=\\"" + SIZE + "\\"><path d=\\"" + (this.options.arrowPath || PATH) + "\\" /></svg></button>"; 6577 }; 6578 6579 _proto3.html = function html() { 6580 var _this$config = this.config, 6581 rootClass = _this$config.rootClass, 6582 listTag = _this$config.listTag, 6583 arrows = _this$config.arrows, 6584 beforeTrack = _this$config.beforeTrack, 6585 afterTrack = _this$config.afterTrack, 6586 slider = _this$config.slider, 6587 beforeSlider = _this$config.beforeSlider, 6588 afterSlider = _this$config.afterSlider; 6589 var html = ""; 6590 html += "<div id=\\"" + this.id + "\\" class=\\"" + this.buildClasses() + " " + (rootClass || "") + "\\">"; 6591 html += "<style>" + this.Style.build() + "</style>"; 6592 6593 if (slider) { 6594 html += beforeSlider || ""; 6595 html += "<div class=\\"splide__slider\\">"; 6596 } 6597 6598 html += beforeTrack || ""; 6599 6600 if (arrows) { 6601 html += this.renderArrows(); 6602 } 6603 6604 html += "<div class=\\"splide__track\\">"; 6605 html += "<" + listTag + " class=\\"splide__list\\">"; 6606 html += this.renderSlides(); 6607 html += "</" + listTag + ">"; 6608 html += "</div>"; 6609 html += afterTrack || ""; 6610 6611 if (slider) { 6612 html += "</div>"; 6613 html += afterSlider || ""; 6614 } 6615 6616 html += "</div>"; 6617 return html; 6618 }; 6619 6620 return SplideRenderer; 6621}(); 6622 6623 6624 6625//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanM/ZDIxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFOztBQUUzVCw2REFBNkQsc0VBQXNFLDhEQUE4RCxrREFBa0Qsa0JBQWtCLEVBQUUsb0JBQW9COztBQUUzUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0F
6625BRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw4QkFBOEIsMENBQTBDO0FBQ3hFLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVELEtBQUssSUFBSTtBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0F
6625BRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
6625QUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
6625QUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0F
6625BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSywyQ0FBMkM7O0FBRWhEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxvQ0FBb0M7QUFDcEM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQSxPQUFPO0FBQ1AsZUFBZTtBQUNmLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDLHNEQUFzRDtBQUN0RDtBQUNBLDJCQUEyQix1Q0FBdUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNEQUFzRDtBQUN0RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0F
6625BRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBLE9BQU87QUFDUCwyQkFBMkI7QUFDM0I7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRTBvQyIsImZpbGUiOiIxNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci
662553cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbi8qIVxuICogU3BsaWRlLmpzXG4gKiBWZXJzaW9uICA6IDQuMS40XG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG52YXIgTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTiA9IFwiKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSlcIjtcbnZhciBDUkVBVEVEID0gMTtcbnZhciBNT1VOVEVEID0gMjtcbnZhciBJRExFID0gMztcbnZhciBNT1ZJTkcgPSA0O1xudmFyIFNDUk9MTElORyA9IDU7XG52YXIgRFJBR0dJTkcgPSA2O1xudmFyIERFU1RST1lFRCA9IDc7XG52YXIgU1RBVEVTID0ge1xuICBDUkVBVEVEOiBDUkVBVEVELFxuICBNT1VOVEVEOiBNT1VOVEVELFxuICBJRExFOiBJRExFLFxuICBNT1ZJTkc6IE1PVklORyxcbiAgU0NST0xMSU5HOiBTQ1JPTExJTkcsXG4gIERSQUdHSU5HOiBEUkFHR0lORyxcbiAgREVTVFJPWUVEOiBERVNUUk9ZRURcbn07XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UoYXJndW1lbnRzLCAxKSkpO1xufVxuXG52YXIgbmV4dFRpY2sgPSBzZXRUaW1lb3V0O1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uIG5vb3AoKSB7fTtcblxuZnVuY3Rpb24gcmFmKGZ1bmMpIHtcbiAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xudmFyIGlzRnVuY3Rpb24gPSBhcHBseSh0eXBlT2YsIFwiZnVuY3Rpb25cIik7XG52YXIgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xudmFyIGlzVW5kZWZpbmVkID0gYXBwbHkodHlwZU9mLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQoc3ViamVjdCkge1xuICB0cnkge1xuICAgIHJldHVybiBzdWJqZWN0IGluc3RhbmNlb2YgKHN1YmplY3Qub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cpLkhUTUxFbGVtZW50O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgaXRlcmF0ZWUpIHtcbiAgdG9BcnJheSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpID4gLTE7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2guYXBwbHkoYXJyYXksIHRvQXJyYXkoaXRlbXMpKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGFkZCkge1xuICBpZiAoZWxtKSB7XG4gICAgZm9yRWFjaChjbGFzc2VzLCBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgZWxtLmNsYXNzTGlzdFthZGQgPyBcImFkZFwiIDogXCJyZW1vdmVcIl0obmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhc3MoZWxtLCBjbGFzc2VzKSB7XG4gIHRvZ2dsZUNsYXNzKGVsbSwgaXNTdHJpbmcoY2xhc3NlcykgPyBjbGFzc2VzLnNwbGl0KFwiIFwiKSA6IGNsYXNzZXMsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBhcHBlbmQocGFyZW50LCBjaGlsZHJlbikge1xuICBmb3JFYWNoKGNoaWxkcmVuLCBwYXJlbnQuYXBwZW5kQ2hpbGQuYmluZChwYXJlbnQpKTtcbn1cblxuZnVuY3Rpb24gYmVmb3JlKG5vZGVzLCByZWYpIHtcbiAgZm9yRWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICB2YXIgcGFyZW50ID0gKHJlZiB8fCBub2RlKS5wYXJlbnROb2RlO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoZXMoZWxtLCBzZWxlY3Rvcikge1xuICByZXR1cm4gaXNIVE1MRWxlbWVudChlbG0pICYmIChlbG1bXCJtc01hdGNoZXNTZWxlY3RvclwiXSB8fCBlbG0ubWF0Y2hlcykuY2FsbChlbG0sIHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW4ocGFyZW50LCBzZWxlY3Rvcikge1xuICB2YXIgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBtYXRjaGVzKGNoaWxkLCBzZWxlY3Rvcik7XG4gIH0pIDogY2hpbGRyZW4yO1xufVxuXG5mdW5jdGlvbiBjaGlsZChwYXJlbnQsIHNlbGVjdG9yKSB7XG4gIHJldHVybi
6625BzZWxlY3RvciA/IGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpWzBdIDogcGFyZW50LmZpcnN0RWxlbWVudENoaWxkO1xufVxuXG52YXIgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIChyaWdodCA/IG93bktleXMob2JqZWN0KS5yZXZlcnNlKCkgOiBvd25LZXlzKG9iamVjdCkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAga2V5ICE9PSBcIl9fcHJvdG9fX1wiICYmIGl0ZXJhdGVlKG9iamVjdFtrZXldLCBrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduKG9iamVjdCkge1xuICBzbGljZShhcmd1bWVudHMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGZvck93bihzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gbWVyZ2Uob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IG1lcmdlKHt9LCBpc09iamVjdChvYmplY3Rba2V5XSkgPyBvYmplY3Rba2V5XSA6IHt9LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gb21pdChvYmplY3QsIGtleXMpIHtcbiAgZm9yRWFjaChrZXlzIHx8IG93bktleXMob2JqZWN0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgIGRlbGV0ZSBvYmplY3Rba2V5XTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUF0dHJpYnV0ZShlbG1zLCBhdHRycykge1xuICBmb3JFYWNoKGVsbXMsIGZ1bmN0aW9uIChlbG0pIHtcbiAgICBmb3JFYWNoKGF0dHJzLCBmdW5jdGlvbiAoYXR0cikge1xuICAgICAgZWxtICYmIGVsbS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGUoZWxtcywgYXR0cnMsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChhdHRycykpIHtcbiAgICBmb3JPd24oYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZTIsIG5hbWUpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShlbG1zLCBuYW1lLCB2YWx1ZTIpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGZvckVhY2goZWxtcywgZnVuY3Rpb24gKGVsbSkge1xuICAgICAgaXNOdWxsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gXCJcIiA/IHJlbW92ZUF0dHJpYnV0ZShlbG0sIGF0dHJzKSA6IGVsbS5zZXRBdHRyaWJ1dGUoYXR0cnMsIFN0cmluZyh2YWx1ZSkpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZSh0YWcsIGF0dHJzLCBwYXJlbnQpIHtcbiAgdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcblxuICBpZiAoYXR0cnMpIHtcbiAgICBpc1N0cmluZyhhdHRycykgPyBhZGRDbGFzcyhlbG0sIGF0dHJzKSA6IHNldEF0dHJpYnV0ZShlbG0sIGF0dHJzKTtcbiAgfVxuXG4gIHBhcmVudCAmJiBhcHBlbmQocGFyZW50LCBlbG0pO1xuICByZXR1cm4gZWxtO1xufVxuXG5mdW5jdGlvbiBzdHlsZShlbG0sIHByb3AsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbG0pW3Byb3BdO1xuICB9XG5cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gXCJcIiArIHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BsYXkoZWxtLCBkaXNwbGF5Mikge1xuICBzdHlsZShlbG0sIFwiZGlzcGxheVwiLCBkaXNwbGF5Mik7XG59XG5cbmZ1bmN0aW9uIGZvY3VzKGVsbSkge1xuICBlbG1bXCJzZXRBY3RpdmVcIl0gJiYgZWxtW1wic2V0QWN0aXZlXCJdKCkgfHwgZWxtLmZvY3VzKHtcbiAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxtLCBhdHRyKSB7XG4gIHJldHVybiBlbG0uZ2V0QXR0cmlidXRlKGF0dHIpO1xufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVjdCh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGNoaWxkKG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgXCJ0ZXh0L2h0bWxcIikuYm9keSk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnQoZSwgc3RvcFByb3BhZ2F0aW9uKSB7XG4gIGUucHJldmVudERlZmF1bHQoKTtcblxuICBpZiAoc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5KHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHBhcmVudCAmJiBwYXJlbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5QWxsKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID8gc2xpY2UocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSA6IFtdO1xufVxuXG5mdW5jdGlvbiByZW1vdmVDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBjbGFzc2VzLCBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVPZihlKSB7XG4gIHJldHVybi
6625BlLnRpbWVTdGFtcDtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IHZhbHVlICsgXCJweFwiIDogXCJcIjtcbn1cblxudmFyIFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG52YXIgREFUQV9BVFRSSUJVVEUgPSBcImRhdGEtXCIgKyBQUk9KRUNUX0NPREU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJbXCIgKyBQUk9KRUNUX0NPREUgKyBcIl0gXCIgKyAobWVzc2FnZSB8fCBcIlwiKSk7XG4gIH1cbn1cblxudmFyIG1pbiA9IE1hdGgubWluLFxuICAgIG1heCA9IE1hdGgubWF4LFxuICAgIGZsb29yID0gTWF0aC5mbG9vcixcbiAgICBjZWlsID0gTWF0aC5jZWlsLFxuICAgIGFicyA9IE1hdGguYWJzO1xuXG5mdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwoeCwgeSwgZXBzaWxvbikge1xuICByZXR1cm4gYWJzKHggLSB5KSA8IGVwc2lsb247XG59XG5cbmZ1bmN0aW9uIGJldHdlZW4obnVtYmVyLCB4LCB5LCBleGNsdXNpdmUpIHtcbiAgdmFyIG1pbmltdW0gPSBtaW4oeCwgeSk7XG4gIHZhciBtYXhpbXVtID0gbWF4KHgsIHkpO1xuICByZXR1cm4gZXhjbHVzaXZlID8gbWluaW11bSA8IG51bWJlciAmJiBudW1iZXIgPCBtYXhpbXVtIDogbWluaW11bSA8PSBudW1iZXIgJiYgbnVtYmVyIDw9IG1heGltdW07XG59XG5cbmZ1bmN0aW9uIGNsYW1wKG51bWJlciwgeCwgeSkge1xuICB2YXIgbWluaW11bSA9IG1pbih4LCB5KTtcbiAgdmFyIG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBtaW4obWF4KG1pbmltdW0sIG51bWJlciksIG1heGltdW0pO1xufVxuXG5mdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuICsoeCA+IDApIC0gKyh4IDwgMCk7XG59XG5cbmZ1bmN0aW9uIGNhbWVsVG9LZWJhYihzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdChzdHJpbmcsIHJlcGxhY2VtZW50cykge1xuICBmb3JFYWNoKHJlcGxhY2VtZW50cywgZnVuY3Rpb24gKHJlcGxhY2VtZW50KSB7XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoXCIlc1wiLCBcIlwiICsgcmVwbGFjZW1lbnQpO1xuICB9KTtcbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICByZXR1cm4gbnVtYmVyIDwgMTAgPyBcIjBcIiArIG51bWJlciA6IFwiXCIgKyBudW1iZXI7XG59XG5cbnZhciBpZHMgPSB7fTtcblxuZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHJldHVybiBcIlwiICsgcHJlZml4ICsgcGFkKGlkc1twcmVmaXhdID0gKGlkc1twcmVmaXhdIHx8IDApICsgMSk7XG59XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2godGFyZ2V0cywgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ICYmIGZvckVhY2goZXZlbnRzLCBmdW5jdGlvbiAoZXZlbnRzMikge1xuICAgICAgICBldmVudHMyLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudE5TKSB7XG4gICAgICAgICAgdmFyIGZyYWdtZW50ID0gZXZlbnROUy5zcGxpdChcIi5cIik7XG4gICAgICAgICAgaXRlcmF0ZWUodGFyZ2V0LCBmcmFnbWVudFswXSwgZnJhZ21lbn
6625RbMV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgZGF0YVs0XSgpO1xuICAgIH0pO1xuICAgIGVtcHR5KGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxudmFyIEVWRU5UX01PVU5URUQgPSBcIm1vdW50ZWRcIjtcbnZhciBFVkVOVF9SRUFEWSA9IFwicmVhZHlcIjtcbnZhciBFVkVOVF9NT1ZFID0gXCJtb3ZlXCI7XG52YXIgRVZFTlRfTU9WRUQgPSBcIm1vdmVkXCI7XG52YXIgRVZFTlRfQ0xJQ0sgPSBcImNsaWNrXCI7XG52YXIgRVZFTlRfQUNUSVZFID0gXCJhY3RpdmVcIjtcbnZhciBFVkVOVF9JTkFDVElWRSA9IFwiaW5hY3RpdmVcIjtcbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX1JFU0laRSA9IFwicmVzaXplXCI7XG52YXIgRVZFTlRfUkVTSVpFRCA9IFwicmVzaXplZFwiO1xudmFyIEVWRU5UX0RSQUcgPSBcImRyYWdcIjtcbnZhciBFVkVOVF9EUkFHR0lORyA9IFwiZHJhZ2dpbmdcIjtcbnZhciBFVkVOVF9EUkFHR0VEID0gXCJkcmFnZ2VkXCI7XG52YXIgRVZFTlRfU0NST0xMID0gXCJzY3JvbGxcIjtcbnZhciBFVkVOVF9TQ1JPTExFRCA9IFwic2Nyb2xsZWRcIjtcbnZhciBFVkVOVF9PVkVSRkxPVyA9IFwib3ZlcmZsb3dcIjtcbnZhciBFVkVOVF9ERVNUUk9ZID0gXCJkZXN0cm95XCI7XG52YXIgRVZFTlRfQVJST1dTX01PVU5URUQgPSBcImFycm93czptb3VudGVkXCI7XG52YXIgRVZFTlRfQVJST1dTX1VQREFURUQgPSBcImFycm93czp1cGRhdGVkXCI7XG52YXIgRVZFTlRfUEFHSU5BVElPTl9NT1VOVEVEID0gXCJwYWdpbmF0aW9uOm1vdW50ZWRcIjtcbnZhciBFVkVOVF9QQUdJTkFUSU9OX1VQREFURUQgPSBcInBhZ2luYXRpb246dXBkYXRlZFwiO1xudmFyIEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCA9IFwibmF2aWdhdGlvbjptb3VudGVkXCI7XG52YXIgRVZFTlRfQVVUT1BMQVlfUExBWSA9IFwiYXV0b3BsYXk6cGxheVwiO1xudmFyIEVWRU5UX0FVVE9QTEFZX1BMQVlJTkcgPSBcImF1dG9wbGF5OnBsYXlpbmdcIjtcbnZhciBFVkVOVF9BVVRPUExBWV9QQVVTRSA9IFwiYXV0b3BsYXk6cGF1c2VcIjtcbnZhciBFVkVOVF9MQVpZTE9BRF9MT0FERUQgPSBcImxhenlsb2FkOmxvYWRlZFwiO1xudmFyIEVWRU5UX1NMSURFX0tFWURPV04gPSBcInNrXCI7XG52YXIgRVZFTlRfU0hJRlRFRCA9IFwic2hcIjtcbnZhciBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCA9IFwiZWlcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5KGV2ZW50cykuam9pbihcIiBcIiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgaXNBcnJheShlLmRldGFpbCkgPyBlLmRldGFpbCA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHtcbiAgICBiaW5kZXIuZGlzcGF0Y2goYnVzLCBldmVudCwgc2xpY2UoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbihiaW5kZXIsIHtcbiAgICBidXM6IGJ1cyxcbiAgICBvbjogb24sXG4gICAgb2ZmOiBhcHBseShiaW5kZXIudW5iaW5kLCBidXMpLFxuICAgIGVtaXQ6IGVtaXRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RJbnRlcnZhbChpbnRlcnZhbCwgb25JbnRlcnZhbCwgb25VcGRhdGUsIGxpbWl0KSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdztcbiAgdmFyIHN0YXJ0VGltZTtcbiAgdmFyIHJhdGUgPSAwO1xuICB2YXIgaWQ7XG4gIHZhciBwYXVzZWQgPSB0cnVlO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXBhdXNlZCkge1xuICAgICAgcmF0ZSA9IGludGVydmFsID8gbWluKChub3coKSAtIHN0YXJ0VGltZSkgLyBpbnRlcnZhbCwgMSkgOiAxO1xuICAgICAgb25VcGRhdGUgJiYgb25VcGRhdGUocmF0ZSk7XG5cbiAgICAgIGlmIChyYXRlID49IDEpIHtcbiAgICAgICAgb25JbnRlcnZhbCgpO1xuICAgICAgICBzdGFydFRpbWUgPSBub3coKTtcblxuICAgICAgICBpZiAobGltaXQgJiYgKytjb3VudCA+PSBsaW1pdCkge1xuICAgICAgICAgIHJldHVybiBwYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQocmVzdW1lKSB7XG4gICAgcmVzdW1lIHx8IGNhbmNlbCgpO1xuICAgIHN0YXJ0VGltZSA9IG5vdygpIC0gKHJlc3VtZSA/IHJhdGUgKiBpbnRlcnZhbCA6IDApO1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGlkID0gcmFmKHVwZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV3aW5kKCkge1xuICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuICAgIHJhdGUgPSAwO1xuXG4gICAgaWYgKG9uVXBkYXRlKSB7XG4gICAgICBvblVwZGF0ZShyYXRlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWQgJiYgY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpO1xuICAgIHJhdGUgPSAwO1xuICAgIGlkID0gMDtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0KHRpbWUpIHtcbiAgICBpbnRlcnZhbCA9IHRpbWU7XG4gIH1cblxuICBmdW5jdGlvbiBpc1BhdXNlZCgpIHtcbiAgICByZXR1cm4gcGF1c2VkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgcmV3aW5kOiByZXdpbmQsXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIGNhbmNlbDogY2FuY2VsLFxuICAgIHNldDogc2V0LFxuICAgIGlzUGF1c2VkOiBpc1BhdXNlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBTdGF0ZShpbml0aWFsU3RhdGUpIHtcbiAgdmFyIHN0YXRlID0gaW5pdGlhbFN0YXRlO1xuXG4gIGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIHN0YXRlID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBpcyhzdGF0ZXMpIHtcbiAgICByZXR1cm4gaW5jbHVkZXModG9BcnJheShzdGF0ZXMpLCBzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNldDogc2V0LFxuICAgIGlzOiBpc1xuICB9O1xufVxuXG5mdW5jdGlvbiBUaHJvdHRsZShmdW5jLCBkdXJhdGlvbikge1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24gfHwgMCwgZnVuYywgbnVsbCwgMSk7XG4gIHJldHVybi
6625BmdW5jdGlvbiAoKSB7XG4gICAgaW50ZXJ2YWwuaXNQYXVzZWQoKSAmJiBpbnRlcnZhbC5zdGFydCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBNZWRpYShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgYnJlYWtwb2ludHMgPSBvcHRpb25zLmJyZWFrcG9pbnRzIHx8IHt9O1xuICB2YXIgcmVkdWNlZE1vdGlvbiA9IG9wdGlvbnMucmVkdWNlZE1vdGlvbiB8fCB7fTtcbiAgdmFyIGJpbmRlciA9IEV2ZW50QmluZGVyKCk7XG4gIHZhciBxdWVyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgdmFyIGlzTWluID0gb3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiO1xuICAgIG93bktleXMoYnJlYWtwb2ludHMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBpc01pbiA/ICtuIC0gK20gOiArbSAtICtuO1xuICAgIH0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmVnaXN0ZXIoYnJlYWtwb2ludHNba2V5XSwgXCIoXCIgKyAoaXNNaW4gPyBcIm1pblwiIDogXCJtYXhcIikgKyBcIi13aWR0aDpcIiArIGtleSArIFwicHgpXCIpO1xuICAgIH0pO1xuICAgIHJlZ2lzdGVyKHJlZHVjZWRNb3Rpb24sIE1FRElBX1BSRUZFUlNfUkVEVUNFRF9NT1RJT04pO1xuICAgIHVwZGF0ZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgaWYgKGNvbXBsZXRlbHkpIHtcbiAgICAgIGJpbmRlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIob3B0aW9uczIsIHF1ZXJ5KSB7XG4gICAgdmFyIHF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgIGJpbmRlci5iaW5kKHF1ZXJ5TGlzdCwgXCJjaGFuZ2VcIiwgdXBkYXRlKTtcbiAgICBxdWVyaWVzLnB1c2goW29wdGlvbnMyLCBxdWVyeUxpc3RdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICB2YXIgZGVzdHJveWVkID0gc3RhdGUuaXMoREVTVFJPWUVEKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gb3B0aW9ucy5kaXJlY3Rpb247XG4gICAgdmFyIG1lcmdlZCA9IHF1ZXJpZXMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQyLCBlbnRyeSkge1xuICAgICAgcmV0dXJuIG1lcmdlKG1lcmdlZDIsIGVudHJ5WzFdLm1hdGNoZXMgPyBlbnRyeVswXSA6IHt9KTtcbiAgICB9LCB7fSk7XG4gICAgb21pdChvcHRpb25zKTtcbiAgICBzZXQobWVyZ2VkKTtcblxuICAgIGlmIChvcHRpb25zLmRlc3Ryb3kpIHtcbiAgICAgIFNwbGlkZTIuZGVzdHJveShvcHRpb25zLmRlc3Ryb3kgPT09IFwiY29tcGxldGVseVwiKTtcbiAgICB9IGVsc2UgaWYgKGRlc3Ryb3llZCkge1xuICAgICAgZGVzdHJveSh0cnVlKTtcbiAgICAgIFNwbGlkZTIubW91bnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlyZWN0aW9uICE9PSBvcHRpb25zLmRpcmVjdGlvbiAmJiBTcGxpZGUyLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWR1Y2UoZW5hYmxlKSB7XG4gICAgaWYgKG1hdGNoTWVkaWEoTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTikubWF0Y2hlcykge1xuICAgICAgZW5hYmxlID8gbWVyZ2Uob3B0aW9ucywgcmVkdWNlZE1vdGlvbikgOiBvbWl0KG9wdGlvbnMsIG93bktleXMocmVkdWNlZE1vdGlvbikpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNldChvcHRzLCBiYXNlLCBub3RpZnkpIHtcbiAgICBtZXJnZShvcHRpb25zLCBvcHRzKTtcbiAgICBiYXNlICYmIG1lcmdlKE9iamVjdC5nZXRQcm90b3R5cGVPZihvcHRpb25zKSwgb3B0cyk7XG5cbiAgICBpZiAobm90aWZ5IHx8ICFzdGF0ZS5pcyhDUkVBVEVEKSkge1xuICAgICAgU3BsaWRlMi5lbWl0KEVWRU5UX1VQREFURUQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVkdWNlOiByZWR1Y2UsXG4gICAgc2V0OiBzZXRcbiAgfTtcbn1cblxudmFyIEFSUk9XID0gXCJBcnJvd1wiO1xudmFyIEFSUk9XX0xFRlQgPSBBUlJPVyArIFwiTGVmdFwiO1xudmFyIEFSUk9XX1JJR0hUID0gQVJST1cgKyBcIlJpZ2h0XCI7XG52YXIgQVJST1dfVVAgPSBBUlJPVyArIFwiVXBcIjtcbnZhciBBUlJPV19ET1dOID0gQVJST1cgKyBcIkRvd25cIjtcbnZhciBMVFIgPSBcImx0clwiO1xudmFyIFJUTCA9IFwicnRsXCI7XG52YXIgVFRCID0gXCJ0dGJcIjtcbnZhciBPUklFTlRBVElPTl9NQVAgPSB7XG4gIHdpZHRoOiBbXCJoZWlnaHRcIl0sXG4gIGxlZnQ6IFtcInRvcFwiLCBcInJpZ2h0XCJdLFxuICByaWdodDogW1wiYm90dG9tXCIsIFwibGVmdFwiXSxcbiAgeDogW1wieVwiXSxcbiAgWDogW1wiWVwiXSxcbiAgWTogW1wiWFwiXSxcbiAgQXJyb3dMZWZ0OiBbQVJST1dfVVAsIEFSUk9XX1JJR0hUXSxcbiAgQXJyb3dSaWdodDogW0FSUk9XX0RPV04sIEFSUk9XX0xFRlRdXG59O1xuXG5mdW5jdGlvbiBEaXJlY3Rpb24oU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgZnVuY3Rpb24gcmVzb2x2ZShwcm9wLCBheGlzT25seSwgZGlyZWN0aW9uKSB7XG4gICAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IG9wdGlvbnMuZGlyZWN0aW9uO1xuICAgIHZhciBpbmRleCA9IGRpcmVjdGlvbiA9PT0gUlRMICYmICFheGlzT25seSA/IDEgOiBkaXJlY3Rpb24gPT09IFRUQiA/IDAgOiAtMTtcbiAgICByZXR1cm4gT1JJRU5UQVRJT05fTUFQW3Byb3BdICYmIE9SSUVOVEFUSU9OX01BUFtwcm9wXVtpbmRleF0gfHwgcHJvcC5yZXBsYWNlKC93aWR0aHxsZWZ0fHJpZ2h0L2ksIGZ1bmN0aW9uIChtYXRjaCwgb2Zmc2V0KSB7XG4gICAgICB2Y
6625XIgcmVwbGFjZW1lbnQgPSBPUklFTlRBVElPTl9NQVBbbWF0Y2gudG9Mb3dlckNhc2UoKV1baW5kZXhdIHx8IG1hdGNoO1xuICAgICAgcmV0dXJuIG9mZnNldCA+IDAgPyByZXBsYWNlbWVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHJlcGxhY2VtZW50LnNsaWNlKDEpIDogcmVwbGFjZW1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvcmllbnQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgKiAob3B0aW9ucy5kaXJlY3Rpb24gPT09IFJUTCA/IDEgOiAtMSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgb3JpZW50OiBvcmllbnRcbiAgfTtcbn1cblxudmFyIFJPTEUgPSBcInJvbGVcIjtcbnZhciBUQUJfSU5ERVggPSBcInRhYmluZGV4XCI7XG52YXIgRElTQUJMRUQgPSBcImRpc2FibGVkXCI7XG52YXIgQVJJQV9QUkVGSVggPSBcImFyaWEtXCI7XG52YXIgQVJJQV9DT05UUk9MUyA9IEFSSUFfUFJFRklYICsgXCJjb250cm9sc1wiO1xudmFyIEFSSUFfQ1VSUkVOVCA9IEFSSUFfUFJFRklYICsgXCJjdXJyZW50XCI7XG52YXIgQVJJQV9TRUxFQ1RFRCA9IEFSSUFfUFJFRklYICsgXCJzZWxlY3RlZFwiO1xudmFyIEFSSUFfTEFCRUwgPSBBUklBX1BSRUZJWCArIFwibGFiZWxcIjtcbnZhciBBUklBX0xBQkVMTEVEQlkgPSBBUklBX1BSRUZJWCArIFwibGFiZWxsZWRieVwiO1xudmFyIEFSSUFfSElEREVOID0gQVJJQV9QUkVGSVggKyBcImhpZGRlblwiO1xudmFyIEFSSUFfT1JJRU5UQVRJT04gPSBBUklBX1BSRUZJWCArIFwib3JpZW50YXRpb25cIjtcbnZhciBBUklBX1JPTEVERVNDUklQVElPTiA9IEFSSUFfUFJFRklYICsgXCJyb2xlZGVzY3JpcHRpb25cIjtcbnZhciBBUklBX0xJVkUgPSBBUklBX1BSRUZJWCArIFwibGl2ZVwiO1xudmFyIEFSSUFfQlVTWSA9IEFSSUFfUFJFRklYICsgXCJidXN5XCI7XG52YXIgQVJJQV9BVE9NSUMgPSBBUklBX1BSRUZJWCArIFwiYXRvbWljXCI7XG52YXIgQUxMX0FUVFJJQlVURVMgPSBbUk9MRSwgVEFCX0lOREVYLCBESVNBQkxFRCwgQVJJQV9DT05UUk9MUywgQVJJQV9DVVJSRU5ULCBBUklBX0xBQkVMLCBBUklBX0xBQkVMTEVEQlksIEFSSUFfSElEREVOLCBBUklBX09SSUVOVEFUSU9OLCBBUklBX1JPTEVERVNDUklQVElPTl07XG52YXIgQ0xBU1NfUFJFRklYID0gUFJPSkVDVF9DT0RFICsgXCJfX1wiO1xudmFyIFNUQVRVU19DTEFTU19QUkVGSVggPSBcImlzLVwiO1xudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREU7XG52YXIgQ0xBU1NfVFJBQ0sgPSBDTEFTU19QUkVGSVggKyBcInRyYWNrXCI7XG52YXIgQ0xBU1NfTElTVCA9IENMQVNTX1BSRUZJWCArIFwibGlzdFwiO1xudmFyIENMQVNTX1NMSURFID0gQ0xBU1NfUFJFRklYICsgXCJzbGlkZVwiO1xudmFyIENMQVNTX0NMT05FID0gQ0xBU1NfU0xJREUgKyBcIi0tY2xvbmVcIjtcbnZhciBDTEFTU19DT05UQUlORVIgPSBDTEFTU19TTElERSArIFwiX19jb250YWluZXJcIjtcbnZhciBDTEFTU19BUlJPV1MgPSBDTEFTU19QUkVGSVggKyBcImFycm93c1wiO1xudmFyIENMQVNTX0FSUk9XID0gQ0xBU1NfUFJFRklYICsgXCJhcnJvd1wiO1xudmFyIENMQVNTX0FSUk9XX1BSRVYgPSBDTEFTU19BUlJPVyArIFwiLS1wcmV2XCI7XG52YXIgQ0xBU1NfQVJST1dfTkVYVCA9IENMQVNTX0FSUk9XICsgXCItLW5leHRcIjtcbnZhciBDTEFTU19QQUdJTkFUSU9OID0gQ0xBU1NfUFJFRklYICsgXCJwYWdpbmF0aW9uXCI7XG52YXIgQ0xBU1NfUEFHSU5BVElPTl9QQUdFID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiX19wYWdlXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1MgPSBDTEFTU19QUkVGSVggKyBcInByb2dyZXNzXCI7XG52YXIgQ0xBU1NfUFJPR1JFU1NfQkFSID0gQ0xBU1NfUFJPR1JFU1MgKyBcIl9fYmFyXCI7XG52YXIgQ0xBU1NfVE9HR0xFID0gQ0xBU1NfUFJFRklYICsgXCJ0b2dnbGVcIjtcbnZhciBDTEFTU19UT0dHTEVfUExBWSA9IENMQVNTX1RPR0dMRSArIFwiX19wbGF5XCI7XG52YXIgQ0xBU1NfVE9HR0xFX1BBVVNFID0gQ0xBU1NfVE9HR0xFICsgXCJfX3BhdXNlXCI7XG52YXIgQ0xBU1NfU1BJTk5FUiA9IENMQVNTX1BSRUZJWCArIFwic3Bpbm5lclwiO1xudmFyIENMQVNTX1NSID0gQ0xBU1NfUFJFRklYICsgXCJzclwiO1xudmFyIENMQVNTX0lOSVRJQUxJWkVEID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiaW5pdGlhbGl6ZWRcIjtcbnZhciBDTEFTU19BQ1RJVkUgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJhY3RpdmVcIjtcbnZhciBDTEFTU19QUkVWID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwicHJldlwiO1xudmFyIENMQVNTX05FWFQgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJuZXh0XCI7XG52YXIgQ0xBU1NfVklTSUJMRSA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcInZpc2libGVcIjtcbnZhciBDTEFTU19MT0FESU5HID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwibG9hZGluZ1wiO1xudmFyIENMQVNTX0ZPQ1VTX0lOID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwiZm9jdXMtaW5cIjtcbnZhciBDTEFTU19PVkVSRkxP
6625VyA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcIm92ZXJmbG93XCI7XG52YXIgU1RBVFVTX0NMQVNTRVMgPSBbQ0xBU1NfQUNUSVZFLCBDTEFTU19WSVNJQkxFLCBDTEFTU19QUkVWLCBDTEFTU19ORVhULCBDTEFTU19MT0FESU5HLCBDTEFTU19GT0NVU19JTiwgQ0xBU1NfT1ZFUkZMT1ddO1xudmFyIENMQVNTRVMgPSB7XG4gIHNsaWRlOiBDTEFTU19TTElERSxcbiAgY2xvbmU6IENMQVNTX0NMT05FLFxuICBhcnJvd3M6IENMQVNTX0FSUk9XUyxcbiAgYXJyb3c6IENMQVNTX0FSUk9XLFxuICBwcmV2OiBDTEFTU19BUlJPV19QUkVWLFxuICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICBwYWdpbmF0aW9uOiBDTEFTU19QQUdJTkFUSU9OLFxuICBwYWdlOiBDTEFTU19QQUdJTkFUSU9OX1BBR0UsXG4gIHNwaW5uZXI6IENMQVNTX1NQSU5ORVJcbn07XG5cbmZ1bmN0aW9uIGNsb3Nlc3QoZnJvbSwgc2VsZWN0b3IpIHtcbiAgaWYgKGlzRnVuY3Rpb24oZnJvbS5jbG9zZXN0KSkge1xuICAgIHJldHVybiBmcm9tLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICB9XG5cbiAgdmFyIGVsbSA9IGZyb207XG5cbiAgd2hpbGUgKGVsbSAmJiBlbG0ubm9kZVR5cGUgPT09IDEpIHtcbiAgICBpZiAobWF0Y2hlcyhlbG0sIHNlbGVjdG9yKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWxtID0gZWxtLnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZWxtO1xufVxuXG52YXIgRlJJQ1RJT04gPSA1O1xudmFyIExPR19JTlRFUlZBTCA9IDIwMDtcbnZhciBQT0lOVEVSX0RPV05fRVZFTlRTID0gXCJ0b3VjaHN0YXJ0IG1vdXNlZG93blwiO1xudmFyIFBPSU5URVJfTU9WRV9FVkVOVFMgPSBcInRvdWNobW92ZSBtb3VzZW1vdmVcIjtcbnZhciBQT0lOVEVSX1VQX0VWRU5UUyA9IFwidG91Y2hlbmQgdG91Y2hjYW5jZWwgbW91c2V1cCBjbGlja1wiO1xuXG5mdW5jdGlvbiBFbGVtZW50cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZS5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UuYmluZDtcblxuICB2YXIgcm9vdCA9IFNwbGlkZTIucm9vdDtcbiAgdmFyIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBlbGVtZW50cyA9IHt9O1xuICB2YXIgc2xpZGVzID0gW107XG4gIHZhciByb290Q2xhc3NlcyA9IFtdO1xuICB2YXIgdHJhY2tDbGFzc2VzID0gW107XG4gIHZhciB0cmFjaztcbiAgdmFyIGxpc3Q7XG4gIHZhciBpc1VzaW5nS2V5O1xuXG4gIGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIGNvbGxlY3QoKTtcbiAgICBpbml0KCk7XG4gICAgdXBkYXRlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBkZXN0cm95KTtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBzZXR1cCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgdXBkYXRlKTtcbiAgICBiaW5kKGRvY3VtZW50LCBQT0lOVEVSX0RPV05fRVZFTlRTICsgXCIga2V5ZG93blwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaXNVc2luZ0tleSA9IGUudHlwZSA9PT0gXCJrZXlkb3duXCI7XG4gICAgfSwge1xuICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgIH0pO1xuICAgIGJpbmQocm9vdCwgXCJmb2N1c2luXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHJvb3QsIENMQVNTX0ZPQ1VTX0lOLCAhIWlzVXNpbmdLZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveShjb21wbGV0ZWx5KSB7XG4gICAgdmFyIGF0dHJzID0gQUxMX0FUVFJJQlVURVMuY29uY2F0KFwic3R5bGVcIik7XG4gICAgZW1wdHkoc2xpZGVzKTtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKFt0cmFjaywgbGlzdF0sIGF0dHJzKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUocm9vdCwgY29tcGxldGVseSA/IGF0dHJzIDogW1wic3R5bGVcIiwgQVJJQV9ST0xFREVTQ1JJUFRJT05dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICByZW1vdmVDbGFzcyhyb290LCByb290Q2xhc3Nlcyk7XG4gICAgcmVtb3ZlQ2xhc3ModHJhY2ssIHRyYWNrQ2xhc3Nlcyk7XG4gICAgcm9vdENsYXNzZXMgPSBnZXRDbGFzc2VzKENMQVNTX1JPT1QpO1xuICAgIHRyYWNrQ2xhc3NlcyA9IGdldENsYXNzZXMoQ0xBU1NfVFJBQ0spO1xuICAgIGFkZENsYXNzKHJvb3QsIHJvb3RDbGFzc2VzKTtcbiAgICBhZGRDbGFzcyh0cmFjaywgdHJhY2tDbGFzc2VzKTtcbiAgICBzZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9MQUJFTCwgb3B0aW9ucy5sYWJlbCk7XG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSwgb3B0aW9ucy5sYWJlbGxlZGJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbGxlY3QoKSB7XG4gICAgdHJhY2sgPSBmaW5kKFwiLlwiICsgQ0xBU1NfVFJBQ0spO1xuICAgIGxpc3QgPSBjaGlsZCh0cmFjaywgXCIuXCIgKyBDTEFTU19MSVNUKTtcbiAgICBhc3NlcnQodHJhY2sgJiYgbGlzdCwgXCJBIHRyYWNrL2xpc3QgZWxlbWVudCBpcyBtaXNzaW5nLlwiKTtcbiAgICBwdXNoKHNsaWRlcywgY2hpbGRyZW4obGlzdCwgXCIuXCIgKyBDTEFTU19TTElERSArIFwiOm5vdCguXCIgKyBDTEFTU19DTE9ORSArIFwiKVwiKSk7XG4gICAgZm9yT3duKHtcbiAgICAgIGFycm93czogQ0xBU1NfQVJST1dTLFxuICAgICAgcGFnaW5hdGlvbjogQ0xBU1NfUEFHSU5BVElPTixcbiAgICAgIHByZXY6IENMQVNTX0FSUk9XX1BSRVYsXG4gICAgICBuZXh0OiBDTEFTU19BUlJPV19ORVhULFxuICAgICAgYmFyOiBDTEFTU19QUk9HUkVTU19CQVIsXG4gICAgICB0b2dnbGU6IENMQVNTX1RPR0dMRVxuICAgIH0sIGZ1bmN0aW9uIChjbGFzc05hbWUsIGtleSkge1xuICAgICAgZWxlbWVudHNba2V5XSA9IGZpbmQoXCIuXCIgKyBjbGFzc05hbWUpO1xuICAgIH0pO1xuICAgIGFzc2lnbihlbGVtZW50cywge1xuICAgICAgcm9vdDogcm9vdCxcbiAgICAgIHRyYWNrOiB0cmFjayxcbiAgICAgIGxpc3Q6IGxpc3QsXG4gICAgICBzbGlkZXM6IHNsaWRlc1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgaWQgPSByb290LmlkIHx8IHVuaXF1ZUlkKFBST0pFQ1RfQ09ERSk7XG4gICAgdmFyIHJvbGUgPSBvcHRpb25zLnJvbGU7XG4gICAgcm9vdC5pZCA9IGlkO1xuICAgIHRyYWNrLmlkID0gdHJhY2suaWQgfHwgaWQgKyBcIi10cmFja1wiO1xuICAgIGxpc3QuaWQgPSBsaXN0LmlkIHx8IGlkICsgXCItbGlzdFwiO1xuXG4gICAgaWYgKCFnZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSkgJiYgcm9vdC50YWdOYW1lICE9PSBcIlNFQ1RJT05cIiAmJiByb2xlKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUocm9vdCwgUk9MRSwgcm9sZSk7XG4gICAgfVxuXG4gICAgc2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfUk9MRURFU0NSSVBUSU9OLCBpMThuLmNhcm91c2VsKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kKHNlbGVjdG9yKSB7XG4gICAgdmFyIGVsbSA9IHF1ZXJ5KHJvb3QsIHNlbGVjdG9yKTtcbiAgICByZXR1cm4gZWxtICYmIGNsb3Nlc3QoZWxtLCBcIi5cIiArIENMQVNTX1JPT1QpID09PSByb290ID8gZWxtIDogdm9pZCAwO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Q2xhc3NlcyhiYXNlKSB7XG4gICAgcmV0dXJuIFtiYXNlICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBiYXNlICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBiYXNlICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBiYXNlICsgXCItLW5hdlwiLCBiYXNlID09PSBDTEFTU19ST09UICYmIENMQVNTX0FDVElWRV07XG4gIH1cblxuICByZXR1cm4gYXNzaWduKGVsZW1lbnRzLCB7XG4gICAgc2V0dXA6IHNldHVwLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH0pO1xufVxuXG52YXIgU0xJREUgPSBcInNsaWRlXCI7XG52YXIgTE9PUCA9IFwibG9vcFwiO1xudmFyIEZBREUgPSBcImZhZGVcIjtcblxuZnVuY3Rpb24gU2xpZGUkMShTcGxpZGUyLCBpbmRleCwgc2xpZGVJbmRleCwgc2xpZGUpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uLFxuICAgICAgZW1pdCA9IGV2ZW50LmVtaXQsXG4gICAgICBiaW5kID0gZXZlbnQuYmluZDtcbiAgdmFyIENvbXBvbmVudHMgPSBTcGxpZGUyLkNvbXBvbmVudHMsXG4gICAgICByb290ID0gU3BsaWRlMi5yb290LFxuICAgICAgb3B0aW9ucyA9IFNwbGlkZTIub3B0aW9ucztcbiAgdmFyIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMuaXNOYXZpZ2F0aW9uLFxuICAgICAgdXBkYXRlT25Nb3ZlID0gb3B0aW9ucy51cGRhdGVPbk1vdmUsXG4gICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgcGFnaW5hdGlvbiA9IG9wdGlvbnMucGFnaW5hdGlvbixcbiAgICAgIHNsaWRlRm9jdXMgPSBvcHRpb25zLnNsaWRlRm9jdXM7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50cy5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIHN0eWxlcyA9IGdldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiKTtcbiAgdmFyIGxhYmVsID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMKTtcbiAgdmFyIGlzQ2xvbmUgPSBzbGlkZUluZGV4ID4gLTE7XG4gIHZhciBjb250YWluZXIgPSBjaGlsZChzbGlkZSwgXCIuXCIgKyBDTEFTU19DT05UQUlORVIpO1xuICB2YXIgZGVzdHJveWVkO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmICghaXNDbG9uZSkge1xuICAgICAgc2xpZGUuaWQgPSByb290LmlkICsgXCItc2xpZGVcIiArIHBhZChpbmRleCArIDEpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBwYWdpbmF0aW9uID8gXCJ0YWJwYW5lbFwiIDogXCJncm91cFwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ST0xFREVTQ1JJUFRJT04sIGkxOG4uc2xpZGUpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMLCBsYWJlbCB8fCBmb3JtYXQoaTE4bi5zbGlkZUxhYmVsLCBbaW5kZXggKyAxLCBTcGxpZGUyLmxlbmd0aF0pKTtcbiAgICB9XG5cbiAgICBsaXN0ZW4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBiaW5kKHNsaWRlLCBcImNsaWNrXCIsIGFwcGx5KGVtaXQsIEVWRU5UX0NMSUNLLCBzZWxmKSk7XG4gICAgYmluZChzbGlkZSwgXCJrZXlkb3duXCIsIGFwcGx5KGVtaXQsIEVWRU5UX1NMSURFX0tFWURPV04sIHNlbGYpKTtcbiAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX1NISU
6625ZURUQsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICBvbihFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIGluaXROYXZpZ2F0aW9uKTtcblxuICAgIGlmICh1cGRhdGVPbk1vdmUpIHtcbiAgICAgIG9uKEVWRU5UX01PVkUsIG9uTW92ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICByZW1vdmVDbGFzcyhzbGlkZSwgU1RBVFVTX0NMQVNTRVMpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShzbGlkZSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgXCJzdHlsZVwiLCBzdHlsZXMpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgbGFiZWwgfHwgXCJcIik7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0TmF2aWdhdGlvbigpIHtcbiAgICB2YXIgY29udHJvbHMgPSBTcGxpZGUyLnNwbGlkZXMubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgIHZhciBTbGlkZTIgPSB0YXJnZXQuc3BsaWRlLkNvbXBvbmVudHMuU2xpZGVzLmdldEF0KGluZGV4KTtcbiAgICAgIHJldHVybiBTbGlkZTIgPyBTbGlkZTIuc2xpZGUuaWQgOiBcIlwiO1xuICAgIH0pLmpvaW4oXCIgXCIpO1xuICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9MQUJFTCwgZm9ybWF0KGkxOG4uc2xpZGVYLCAoaXNDbG9uZSA/IHNsaWRlSW5kZXggOiBpbmRleCkgKyAxKSk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0NPTlRST0xTLCBjb250cm9scyk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBST0xFLCBzbGlkZUZvY3VzID8gXCJidXR0b25cIiA6IFwiXCIpO1xuICAgIHNsaWRlRm9jdXMgJiYgcmVtb3ZlQXR0cmlidXRlKHNsaWRlLCBBUklBX1JPTEVERVNDUklQVElPTik7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgaWYgKCFkZXN0cm95ZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIWRlc3Ryb3llZCkge1xuICAgICAgdmFyIGN1cnIgPSBTcGxpZGUyLmluZGV4O1xuICAgICAgdXBkYXRlQWN0aXZpdHkoKTtcbiAgICAgIHVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgIHRvZ2dsZUNsYXNzKHNsaWRlLCBDTEFTU19QUkVWLCBpbmRleCA9PT0gY3VyciAtIDEpO1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX05FWFQsIGluZGV4ID09PSBjdXJyICsgMSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlQWN0aXZpdHkoKSB7XG4gICAgdmFyIGFjdGl2ZSA9IGlzQWN0aXZlKCk7XG5cbiAgICBpZiAoYWN0aXZlICE9PSBoYXNDbGFzcyhzbGlkZSwgQ0xBU1NfQUNUSVZFKSkge1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX0FDVElWRSwgYWN0aXZlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9DVVJSRU5ULCBpc05hdmlnYXRpb24gJiYgYWN0aXZlIHx8IFwiXCIpO1xuICAgICAgZW1pdChhY3RpdmUgPyBFVkVOVF9BQ1RJVkUgOiBFVkVOVF9JTkFDVElWRSwgc2VsZik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmlzaWJpbGl0eSgpIHtcbiAgICB2YXIgdmlzaWJsZSA9IGlzVmlzaWJsZSgpO1xuICAgIHZhciBoaWRkZW4gPSAhdmlzaWJsZSAmJiAoIWlzQWN0aXZlKCkgfHwgaXNDbG9uZSk7XG5cbiAgICBpZiAoIVNwbGlkZTIuc3RhdGUuaXMoW01PVklORywgU0NST0xMSU5HXSkpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgQVJJQV9ISURERU4sIGhpZGRlbiB8fCBcIlwiKTtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGUocXVlcnlBbGwoc2xpZGUsIG9wdGlvbnMuZm9jdXNhYmxlTm9kZXMgfHwgXCJcIiksIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiBcIlwiKTtcblxuICAgIGlmIChzbGlkZUZvY3VzKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIFRBQl9JTkRFWCwgaGlkZGVuID8gLTEgOiAwKTtcbiAgICB9XG5cbiAgICBpZiAodmlzaWJsZSAhPT0gaGFzQ2xhc3Moc2xpZGUsIENMQVNTX1ZJU0lCTEUpKSB7XG4gICAgICB0b2dnbGVDbGFzcyhzbGlkZSwgQ0xBU1NfVklTSUJMRSwgdmlzaWJsZSk7XG4gICAgICBlbWl0KHZpc2libGUgPyBFVkVOVF9WSVNJQkxFIDogRVZFTlRfSElEREVOLCBzZWxmKTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2libGUgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gc2xpZGUpIHtcbiAgICAgIHZhciBTbGlkZTIgPSBDb21wb25lbnRzLlNsaWRlcy5nZXRBdChTcGxpZGUyLmluZGV4KTtcbiAgICAgIFNsaWRlMiAmJiBmb2N1cyhTbGlkZTIuc2xpZGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0eWxlJDEocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIHN0eWxlKHVzZUNvbnRhaW5lciAmJiBjb250YWluZXIgfHwgc2xpZGUsIHByb3AsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHZhciBjdXJyID0gU3BsaWRlMi5pbmRleDtcbiAgICByZXR1cm4gY3VyciA9PT0gaW5kZXggfHwgb3B0aW9ucy5jbG9uZVN0YXR1cyAmJiBjdXJyID09PSBzbGlkZUluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gaXNWaXNpYmxlKCkge1xuICAgIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICByZXR1cm4gaXNBY3RpdmUoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhY2tSZWN0ID0gcmVjdChDb21wb25lbnRzLkVsZW1lbnRzLnRyYWNrKTtcbiAgICB2YXIgc2xpZGVSZWN0ID0gcmVjdChzbGlkZSk7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiLCB0cnVlKTtcbiAgICB2YXIgcmlnaHQgPSByZXNvbHZlKFwicmlnaHRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIGZsb29yKHRyYWNrUmVjdFtsZWZ0XSkgPD0gY2VpbChzbGlkZVJlY3RbbGVmdF0pICYmIGZsb29yKHNsaWRlUmVjdFtyaWdodF0pIDw9IGNlaWwodHJhY2tSZWN0W3JpZ2h0XSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1dpdGhpbihmcm9tLCBkaXN0YW5jZSkge1xuICAgIHZhciBkaWZmID0gYWJzKGZyb20gLSBpbmRleCk7XG5cbiAgICBpZiAoIWlzQ2xvbmUgJiYgKG9wdGlvbnMucmV3aW5kIHx8IFNwbGlkZTIuaXMoTE9PUCkpKSB7XG4gICAgICBkaWZmID0gbWluKGRpZmYsIFNwbGlkZTIubGVuZ3RoIC0gZGlmZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmYgPD0gZGlzdGFuY2U7XG4gIH1cblxuICB2Y
6625XIgc2VsZiA9IHtcbiAgICBpbmRleDogaW5kZXgsXG4gICAgc2xpZGVJbmRleDogc2xpZGVJbmRleCxcbiAgICBzbGlkZTogc2xpZGUsXG4gICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgaXNDbG9uZTogaXNDbG9uZSxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICB1cGRhdGU6IHVwZGF0ZSxcbiAgICBzdHlsZTogc3R5bGUkMSxcbiAgICBpc1dpdGhpbjogaXNXaXRoaW5cbiAgfTtcbiAgcmV0dXJuIHNlbGY7XG59XG5cbmZ1bmN0aW9uIFNsaWRlcyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMiA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UyLm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTIuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UyLmJpbmQ7XG5cbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgc2xpZGVzID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzLnNsaWRlcyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMubGlzdDtcbiAgdmFyIFNsaWRlczIgPSBbXTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfUkVGUkVTSCwgaW5pdCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaW5kZXgpIHtcbiAgICAgIHJlZ2lzdGVyKHNsaWRlLCBpbmRleCwgLTEpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShTbGlkZXMyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBmb3JFYWNoJDEoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgU2xpZGUyLnVwZGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVnaXN0ZXIoc2xpZGUsIGluZGV4LCBzbGlkZUluZGV4KSB7XG4gICAgdmFyIG9iamVjdCA9IFNsaWRlJDEoU3BsaWRlMiwgaW5kZXgsIHNsaWRlSW5kZXgsIHNsaWRlKTtcbiAgICBvYmplY3QubW91bnQoKTtcbiAgICBTbGlkZXMyLnB1c2gob2JqZWN0KTtcbiAgICBTbGlkZXMyLnNvcnQoZnVuY3Rpb24gKFNsaWRlMSwgU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUxLmluZGV4IC0gU2xpZGUyLmluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGV4Y2x1ZGVDbG9uZXMpIHtcbiAgICByZXR1cm4gZXhjbHVkZUNsb25lcyA/IGZpbHRlcihmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gIVNsaWRlMi5pc0Nsb25lO1xuICAgIH0pIDogU2xpZGVzMjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEluKHBhZ2UpIHtcbiAgICB2YXIgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gICAgdmFyIGluZGV4ID0gQ29udHJvbGxlci50b0luZGV4KHBhZ2UpO1xuICAgIHZhciBtYXggPSBDb250cm9sbGVyLmhhc0ZvY3VzKCkgPyAxIDogb3B0aW9ucy5wZXJQYWdlO1xuICAgIHJldHVybiBmaWx0ZXIoZnVuY3Rpb24gKFNsaWRlMikge1xuICAgICAgcmV0dXJuIGJldHdlZW4oU2xpZGUyLmluZGV4LCBpbmRleCwgaW5kZXggKyBtYXggLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGZpbHRlcihpbmRleClbMF07XG4gIH1cblxuICBmdW5jdGlvbiBhZGQoaXRlbXMsIGluZGV4KSB7XG4gICAgZm9yRWFjaChpdGVtcywgZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICBpZiAoaXNTdHJpbmcoc2xpZGUpKSB7XG4gICAgICAgIHNsaWRlID0gcGFyc2VIdG1sKHNsaWRlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSFRNTEVsZW1lbnQoc2xpZGUpKSB7XG4gICAgICAgIHZhciByZWYgPSBzbGlkZXNbaW5kZXhdO1xuICAgICAgICByZWYgPyBiZWZvcmUoc2xpZGUsIHJlZikgOiBhcHBlbmQobGlzdCwgc2xpZGUpO1xuICAgICAgICBhZGRDbGFzcyhzbGlkZSwgb3B0aW9ucy5jbGFzc2VzLnNsaWRlKTtcbiAgICAgICAgb2JzZXJ2ZUltYWdlcyhzbGlkZSwgYXBwbHkoZW1pdCwgRVZFTlRfUkVTSVpFKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW92ZSQxKG1hdGNoZXIpIHtcbiAgICByZW1vdmUoZmlsdGVyKG1hdGNoZXIpLm1hcChmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gU2xpZGUyLnNsaWRlO1xuICAgIH0pKTtcbiAgICBlbWl0KEVWRU5UX1JFRlJFU0gpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yRWFjaCQxKGl0ZXJhdGVlLCBleGNsdWRlQ2xvbmVzKSB7XG4gICAgZ2V0KGV4Y2x1ZGVDbG9uZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gZmlsdGVyKG1hdGNoZXIpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5maWx0ZXIoaXNGdW5jdGlvbihtYXRjaGVyKSA/IG1hdGNoZXIgOiBmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gaXNTdHJpbmcobWF0Y2hlcikgPyBtYXRjaGVzKFNsaWRlMi5zbGlkZSwgbWF0Y2hlcikgOiBpbmNsdWRlcyh0b0FycmF5KG1hdGNoZXIpLCBTbGlkZTIuaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcikge1xuICAgIGZvckVhY2gkMShmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICBTbGlkZTIuc3R5bGUocHJvcCwgdmFsdWUsIHVzZUNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvYnNlcnZlSW1hZ2VzKGVsbSwgY2FsbGJhY2spIHtcbiAgICB2YXIgaW1hZ2VzID0gcXVlcnlBbGwoZWxtLCBcImltZ1wiKTtcbiAgICB2YXIgbGVuZ3RoID0gaW1hZ2VzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIGltYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgYmluZChpbWcsIFwibG9h
6625ZCBlcnJvclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCEgLS1sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExlbmd0aChleGNsdWRlQ2xvbmVzKSB7XG4gICAgcmV0dXJuIGV4Y2x1ZGVDbG9uZXMgPyBzbGlkZXMubGVuZ3RoIDogU2xpZGVzMi5sZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiBpc0Vub3VnaCgpIHtcbiAgICByZXR1cm4gU2xpZGVzMi5sZW5ndGggPiBvcHRpb25zLnBlclBhZ2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlLFxuICAgIHJlZ2lzdGVyOiByZWdpc3RlcixcbiAgICBnZXQ6IGdldCxcbiAgICBnZXRJbjogZ2V0SW4sXG4gICAgZ2V0QXQ6IGdldEF0LFxuICAgIGFkZDogYWRkLFxuICAgIHJlbW92ZTogcmVtb3ZlJDEsXG4gICAgZm9yRWFjaDogZm9yRWFjaCQxLFxuICAgIGZpbHRlcjogZmlsdGVyLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBnZXRMZW5ndGg6IGdldExlbmd0aCxcbiAgICBpc0Vub3VnaDogaXNFbm91Z2hcbiAgfTtcbn1cblxuZnVuY3Rpb24gTGF5b3V0KFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTMub24sXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMy5iaW5kLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTMuZW1pdDtcblxuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgX0NvbXBvbmVudHMyJEVsZW1lbnRzMiA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czIucm9vdCxcbiAgICAgIHRyYWNrID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzMi50cmFjayxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMyLmxpc3Q7XG4gIHZhciBnZXRBdCA9IFNsaWRlcy5nZXRBdCxcbiAgICAgIHN0eWxlU2xpZGVzID0gU2xpZGVzLnN0eWxlO1xuICB2YXIgdmVydGljYWw7XG4gIHZhciByb290UmVjdDtcbiAgdmFyIG92ZXJmbG93O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGluaXQoKTtcbiAgICBiaW5kKHdpbmRvdywgXCJyZXNpemUgbG9hZFwiLCBUaHJvdHRsZShhcHBseShlbWl0LCBFVkVOVF9SRVNJWkUpKSk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBpbml0KTtcbiAgICBvbihFVkVOVF9SRVNJWkUsIHJlc2l6ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHZlcnRpY2FsID0gb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQjtcbiAgICBzdHlsZShyb290LCBcIm1heFdpZHRoXCIsIHVuaXQob3B0aW9ucy53aWR0aCkpO1xuICAgIHN0eWxlKHRyYWNrLCByZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIGNzc1BhZGRpbmcoZmFsc2UpKTtcbiAgICBzdHlsZSh0cmFjaywgcmVzb2x2ZShcInBhZGRpbmdSaWdodFwiKSwgY3NzUGFkZGluZyh0cnVlKSk7XG4gICAgcmVzaXplKHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzaXplKGZvcmNlKSB7XG4gICAgdmFyIG5ld1JlY3QgPSByZWN0KHJvb3QpO1xuXG4gICAgaWYgKGZvcmNlIHx8IHJvb3RSZWN0LndpZHRoICE9PSBuZXdSZWN0LndpZHRoIHx8IHJvb3RSZWN0LmhlaWdodCAhPT0gbmV3UmVjdC5oZWlnaHQpIHtcbiAgICAgIHN0eWxlKHRyYWNrLCBcImhlaWdodFwiLCBjc3NUcmFja0hlaWdodCgpKTtcbiAgICAgIHN0eWxlU2xpZGVzKHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJ3aWR0aFwiLCBjc3NTbGlkZVdpZHRoKCkpO1xuICAgICAgc3R5bGVTbGlkZXMoXCJoZWlnaHRcIiwgY3NzU2xpZGVIZWlnaHQoKSwgdHJ1ZSk7XG4gICAgICByb290UmVjdCA9IG5ld1JlY3Q7XG4gICAgICBlbWl0KEVWRU5UX1JFU0laRUQpO1xuXG4gICAgICBpZiAob3ZlcmZsb3cgIT09IChvdmVyZmxvdyA9IGlzT3ZlcmZsb3coKSkpIHtcbiAgICAgICAgdG9nZ2xlQ2xhc3Mocm9vdCwgQ0xBU1NfT1ZFUkZMT1csIG92ZXJmbG93KTtcbiAgICAgICAgZW1pdChFVkVOVF9PVkVSRkxPVywgb3ZlcmZsb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1BhZGRpbmcocmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIik7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1RyYWNrSGVpZ2h0KCkge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICBoZWlnaHQgPSBjc3NIZWlnaHQoKTtcbiAgICAgIGFzc2VydChoZWlnaHQsIFwiaGVpZ2h0IG9yIGhlaWdodFJhdGlvIGlzIG1pc3NpbmcuXCIpO1xuICAgICAgaGVpZ2h0ID0gXCJjYWxjKFwiICsgaGVpZ2h0ICsgXCIgLSBcIiArIGNzc1BhZGRpbmcoZmFsc2UpICsgXCIgLSBcIiArIGNzc1BhZGRpbmcodHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzSGVpZ2h0KCkge1xuICAgIHJldHVybiB1bml0KG9wdGlvbnMuaGVpZ2h0IHx8IHJlY3QobGlzdCkud2lkdGggKiBvcHRpb25zLmhlaWdodFJhdGlvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNzc1NsaWRlV2lkdGgoKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gbnVsbCA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodmVydGljYWwgPyBcIlwiIDogY3NzU2xpZGVTaXplKCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHZlcnRpY2FsID8gb3B0aW9ucy5hdXRv
6625SGVpZ2h0ID8gbnVsbCA6IGNzc1NsaWRlU2l6ZSgpIDogY3NzSGVpZ2h0KCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVTaXplKCkge1xuICAgIHZhciBnYXAgPSB1bml0KG9wdGlvbnMuZ2FwKTtcbiAgICByZXR1cm4gXCJjYWxjKCgxMDAlXCIgKyAoZ2FwICYmIFwiICsgXCIgKyBnYXApICsgXCIpL1wiICsgKG9wdGlvbnMucGVyUGFnZSB8fCAxKSArIChnYXAgJiYgXCIgLSBcIiArIGdhcCkgKyBcIilcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RTaXplKCkge1xuICAgIHJldHVybiByZWN0KGxpc3QpW3Jlc29sdmUoXCJ3aWR0aFwiKV07XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZVNpemUoaW5kZXgsIHdpdGhvdXRHYXApIHtcbiAgICB2YXIgU2xpZGUgPSBnZXRBdChpbmRleCB8fCAwKTtcbiAgICByZXR1cm4gU2xpZGUgPyByZWN0KFNsaWRlLnNsaWRlKVtyZXNvbHZlKFwid2lkdGhcIildICsgKHdpdGhvdXRHYXAgPyAwIDogZ2V0R2FwKCkpIDogMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdGFsU2l6ZShpbmRleCwgd2l0aG91dEdhcCkge1xuICAgIHZhciBTbGlkZSA9IGdldEF0KGluZGV4KTtcblxuICAgIGlmIChTbGlkZSkge1xuICAgICAgdmFyIHJpZ2h0ID0gcmVjdChTbGlkZS5zbGlkZSlbcmVzb2x2ZShcInJpZ2h0XCIpXTtcbiAgICAgIHZhciBsZWZ0ID0gcmVjdChsaXN0KVtyZXNvbHZlKFwibGVmdFwiKV07XG4gICAgICByZXR1cm4gYWJzKHJpZ2h0IC0gbGVmdCkgKyAod2l0aG91dEdhcCA/IDAgOiBnZXRHYXAoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmdW5jdGlvbiBzbGlkZXJTaXplKHdpdGhvdXRHYXApIHtcbiAgICByZXR1cm4gdG90YWxTaXplKFNwbGlkZTIubGVuZ3RoIC0gMSkgLSB0b3RhbFNpemUoMCkgKyBzbGlkZVNpemUoMCwgd2l0aG91dEdhcCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRHYXAoKSB7XG4gICAgdmFyIFNsaWRlID0gZ2V0QXQoMCk7XG4gICAgcmV0dXJuIFNsaWRlICYmIHBhcnNlRmxvYXQoc3R5bGUoU2xpZGUuc2xpZGUsIHJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSkpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQYWRkaW5nKHJpZ2h0KSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3R5bGUodHJhY2ssIHJlc29sdmUoXCJwYWRkaW5nXCIgKyAocmlnaHQgPyBcIlJpZ2h0XCIgOiBcIkxlZnRcIikpKSkgfHwgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzT3ZlcmZsb3coKSB7XG4gICAgcmV0dXJuIFNwbGlkZTIuaXMoRkFERSkgfHwgc2xpZGVyU2l6ZSh0cnVlKSA+IGxpc3RTaXplKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICByZXNpemU6IHJlc2l6ZSxcbiAgICBsaXN0U2l6ZTogbGlzdFNpemUsXG4gICAgc2xpZGVTaXplOiBzbGlkZVNpemUsXG4gICAgc2xpZGVyU2l6ZTogc2xpZGVyU2l6ZSxcbiAgICB0b3RhbFNpemU6IHRvdGFsU2l6ZSxcbiAgICBnZXRQYWRkaW5nOiBnZXRQYWRkaW5nLFxuICAgIGlzT3ZlcmZsb3c6IGlzT3ZlcmZsb3dcbiAgfTtcbn1cblxudmFyIE1VTFRJUExJRVIgPSAyO1xuXG5mdW5jdGlvbiBDbG9uZXMoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIHZhciBvbiA9IGV2ZW50Lm9uO1xuICB2YXIgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcbiAgdmFyIHJlc29sdmUgPSBDb21wb25lbnRzMi5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIGNsb25lcyA9IFtdO1xuICB2YXIgY2xvbmVDb3VudDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9SRUZSRVNILCByZW1vdW50KTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVTSVpFXSwgb2JzZXJ2ZSk7XG5cbiAgICBpZiAoY2xvbmVDb3VudCA9IGNvbXB1dGVDbG9uZUNvdW50KCkpIHtcbiAgICAgIGdlbmVyYXRlKGNsb25lQ291bnQpO1xuICAgICAgQ29tcG9uZW50czIuTGF5b3V0LnJlc2l6ZSh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBtb3VudCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgICBlbXB0eShjbG9uZXMpO1xuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9ic2VydmUoKSB7XG4gICAgdmFyIGNvdW50ID0gY29tcHV0ZUNsb25lQ291bnQoKTtcblxuICAgIGlmIChjbG9uZUNvdW50ICE9PSBjb3VudCkge1xuICAgICAgaWYgKGNsb25lQ291bnQgPCBjb3VudCB8fCAhY291bnQpIHtcbiAgICAgICAgZXZlbnQuZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZW5lcmF0ZShjb3VudCkge1xuICAgIHZhciBzbGlkZXMgPSBTbGlkZXMuZ2V0KCkuc2xpY2UoKTtcbiAgICB2YXIgbGVuZ3RoID0gc2xpZGVzLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGgpIHtcbiAgICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgICAgcHVzaChzbGlkZXMsIHNsaWRlcyk7XG4gICAgICB9XG5cbiAgICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCksIHNsaWRlcy5zbGljZSgwLCBjb3VudCkpLmZvckVhY2goZnVuY3Rpb24gKFNsaWRlLCBpbmRleCkge1xuICAgICAgICB2Y
6625XIgaXNIZWFkID0gaW5kZXggPCBjb3VudDtcbiAgICAgICAgdmFyIGNsb25lID0gY2xvbmVEZWVwKFNsaWRlLnNsaWRlLCBpbmRleCk7XG4gICAgICAgIGlzSGVhZCA/IGJlZm9yZShjbG9uZSwgc2xpZGVzWzBdLnNsaWRlKSA6IGFwcGVuZChFbGVtZW50cy5saXN0LCBjbG9uZSk7XG4gICAgICAgIHB1c2goY2xvbmVzLCBjbG9uZSk7XG4gICAgICAgIFNsaWRlcy5yZWdpc3RlcihjbG9uZSwgaW5kZXggLSBjb3VudCArIChpc0hlYWQgPyAwIDogbGVuZ3RoKSwgU2xpZGUuaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvbmVEZWVwKGVsbSwgaW5kZXgpIHtcbiAgICB2YXIgY2xvbmUgPSBlbG0uY2xvbmVOb2RlKHRydWUpO1xuICAgIGFkZENsYXNzKGNsb25lLCBvcHRpb25zLmNsYXNzZXMuY2xvbmUpO1xuICAgIGNsb25lLmlkID0gU3BsaWRlMi5yb290LmlkICsgXCItY2xvbmVcIiArIHBhZChpbmRleCArIDEpO1xuICAgIHJldHVybiBjbG9uZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVDbG9uZUNvdW50KCkge1xuICAgIHZhciBjbG9uZXMyID0gb3B0aW9ucy5jbG9uZXM7XG5cbiAgICBpZiAoIVNwbGlkZTIuaXMoTE9PUCkpIHtcbiAgICAgIGNsb25lczIgPSAwO1xuICAgIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoY2xvbmVzMikpIHtcbiAgICAgIHZhciBmaXhlZFNpemUgPSBvcHRpb25zW3Jlc29sdmUoXCJmaXhlZFdpZHRoXCIpXSAmJiBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVTaXplKDApO1xuICAgICAgdmFyIGZpeGVkQ291bnQgPSBmaXhlZFNpemUgJiYgY2VpbChyZWN0KEVsZW1lbnRzLnRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildIC8gZml4ZWRTaXplKTtcbiAgICAgIGNsb25lczIgPSBmaXhlZENvdW50IHx8IG9wdGlvbnNbcmVzb2x2ZShcImF1dG9XaWR0aFwiKV0gJiYgU3BsaWRlMi5sZW5ndGggfHwgb3B0aW9ucy5wZXJQYWdlICogTVVMVElQTElFUjtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmVzMjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gTW92ZShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNCA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U0Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTQuZW1pdDtcblxuICB2YXIgc2V0ID0gU3BsaWRlMi5zdGF0ZS5zZXQ7XG4gIHZhciBfQ29tcG9uZW50czIkTGF5b3V0ID0gQ29tcG9uZW50czIuTGF5b3V0LFxuICAgICAgc2xpZGVTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZVNpemUsXG4gICAgICBnZXRQYWRkaW5nID0gX0NvbXBvbmVudHMyJExheW91dC5nZXRQYWRkaW5nLFxuICAgICAgdG90YWxTaXplID0gX0NvbXBvbmVudHMyJExheW91dC50b3RhbFNpemUsXG4gICAgICBsaXN0U2l6ZSA9IF9Db21wb25lbnRzMiRMYXlvdXQubGlzdFNpemUsXG4gICAgICBzbGlkZXJTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5zbGlkZXJTaXplO1xuICB2YXIgX0NvbXBvbmVudHMyJERpcmVjdGlvID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3Rpby5yZXNvbHZlLFxuICAgICAgb3JpZW50ID0gX0NvbXBvbmVudHMyJERpcmVjdGlvLm9yaWVudDtcbiAgdmFyIF9Db21wb25lbnRzMiRFbGVtZW50czMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIGxpc3QgPSBfQ29tcG9uZW50czIkRWxlbWVudHMzLmxpc3QsXG4gICAgICB0cmFjayA9IF9Db21wb25lbnRzMiRFbGVtZW50czMudHJhY2s7XG4gIHZhciBUcmFuc2l0aW9uO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIFRyYW5zaXRpb24gPSBDb21wb25lbnRzMi5UcmFuc2l0aW9uO1xuICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9SRVNJWkVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgcmVwb3NpdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiByZXBvc2l0aW9uKCkge1xuICAgIGlmICghQ29tcG9uZW50czIuQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgQ29tcG9uZW50czIuU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAganVtcChTcGxpZGUyLmluZGV4KTtcbiAgICAgIENvbXBvbmVudHMyLlNsaWRlcy51cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3ZlKGRlc3QsIGluZGV4LCBwcmV2LCBjYWxsYmFjaykge1xuICAgIGlmIChkZXN0ICE9PSBpbmRleCAmJiBjYW5TaGlmdChkZXN0ID4gcHJldikpIHtcbiAgICAgIGNhbmNlbCgpO1xuICAgICAgdHJhbnNsYXRlKHNoaWZ0KGdldFBvc2l0aW9uKCksIGRlc3QgPiBwcmV2KSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2V0KE1PVklORyk7XG4gICAgZW1pdChFVkVOVF9NT1ZFLCBpbmRleCwgcHJldiwgZGVzdCk7XG4gICAgVHJhbnNpdGlvbi5zdGFydChpbmRleCwgZnVuY3Rpb24gKCkge1xuICAgICAgc2V0KElETEUpO1xuICAgICAgZW1pdChFVkVOVF9NT1ZFRCwgaW5kZXgsIHByZXYsIGRlc3QpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bXAoaW5kZXgpIHtcbiAgICB0cmFuc2xhdGUodG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHBvc2l0aW9uLCBwcmV2ZW50TG9vcCkge1xuICAgIGlmICghU3BsaWRlMi5pcyhGQURFKSkge1xuICAgICAgdmFyIGRlc3RpbmF0aW9uID0gcHJldmVudExvb3AgPyBwb3NpdGlvbiA6IGxvb3AocG9zaXRpb24pO1xuICAgICAgc3R5bGUobGlzdCwgXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGVcIiArIHJlc29sdmUoXCJYXCIpICsgXCIoXCIgKyBkZXN0aW5hdGlvbiArIFwicHgpXCIpO1xuICAgICAgcG9zaXRpb24gIT09IGRlc3RpbmF0aW9uICYmIGVtaXQoRVZFTlRfU0hJRlRFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbG9vcChwb3NpdGlvbikge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApKSB7XG4gICAgICB2Y
6625XIgaW5kZXggPSB0b0luZGV4KHBvc2l0aW9uKTtcbiAgICAgIHZhciBleGNlZWRlZE1heCA9IGluZGV4ID4gQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRFbmQoKTtcbiAgICAgIHZhciBleGNlZWRlZE1pbiA9IGluZGV4IDwgMDtcblxuICAgICAgaWYgKGV4Y2VlZGVkTWluIHx8IGV4Y2VlZGVkTWF4KSB7XG4gICAgICAgIHBvc2l0aW9uID0gc2hpZnQocG9zaXRpb24sIGV4Y2VlZGVkTWF4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBzaGlmdChwb3NpdGlvbiwgYmFja3dhcmRzKSB7XG4gICAgdmFyIGV4Y2VzcyA9IHBvc2l0aW9uIC0gZ2V0TGltaXQoYmFja3dhcmRzKTtcbiAgICB2YXIgc2l6ZSA9IHNsaWRlclNpemUoKTtcbiAgICBwb3NpdGlvbiAtPSBvcmllbnQoc2l6ZSAqIChjZWlsKGFicyhleGNlc3MpIC8gc2l6ZSkgfHwgMSkpICogKGJhY2t3YXJkcyA/IDEgOiAtMSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIHRyYW5zbGF0ZShnZXRQb3NpdGlvbigpLCB0cnVlKTtcbiAgICBUcmFuc2l0aW9uLmNhbmNlbCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9JbmRleChwb3NpdGlvbikge1xuICAgIHZhciBTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMuZ2V0KCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgU2xpZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
6625XIgc2xpZGVJbmRleCA9IFNsaWRlc1tpXS5pbmRleDtcbiAgICAgIHZhciBkaXN0YW5jZSA9IGFicyh0b1Bvc2l0aW9uKHNsaWRlSW5kZXgsIHRydWUpIC0gcG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGlzdGFuY2UgPD0gbWluRGlzdGFuY2UpIHtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgaW5kZXggPSBzbGlkZUluZGV4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gdG9Qb3NpdGlvbihpbmRleCwgdHJpbW1pbmcpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBvcmllbnQodG90YWxTaXplKGluZGV4IC0gMSkgLSBvZmZzZXQoaW5kZXgpKTtcbiAgICByZXR1cm4gdHJpbW1pbmcgPyB0cmltKHBvc2l0aW9uKSA6IHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UG9zaXRpb24oKSB7XG4gICAgdmFyIGxlZnQgPSByZXNvbHZlKFwibGVmdFwiKTtcbiAgICByZXR1cm4gcmVjdChsaXN0KVtsZWZ0XSAtIHJlY3QodHJhY2spW2xlZnRdICsgb3JpZW50KGdldFBhZGRpbmcoZmFsc2UpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyaW0ocG9zaXRpb24pIHtcbiAgICBpZiAob3B0aW9ucy50cmltU3BhY2UgJiYgU3BsaWRlMi5pcyhTTElERSkpIHtcbiAgICAgIHBvc2l0aW9uID0gY2xhbXAocG9zaXRpb24sIDAsIG9yaWVudChzbGlkZXJTaXplKHRydWUpIC0gbGlzdFNpemUoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9mZnNldChpbmRleCkge1xuICAgIHZhciBmb2N1cyA9IG9wdGlvbnMuZm9jdXM7XG4gICAgcmV0dXJuIGZvY3VzID09PSBcImNlbnRlclwiID8gKGxpc3RTaXplKCkgLSBzbGlkZVNpemUoaW5kZXgsIHRydWUpKSAvIDIgOiArZm9jdXMgKiBzbGlkZVNpemUoaW5kZXgpIHx8IDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMaW1pdChtYXgpIHtcbiAgICByZXR1cm4gdG9Qb3NpdGlvbihtYXggPyBDb21wb25lbnRzMi5Db250cm9sbGVyLmdldEVuZCgpIDogMCwgISFvcHRpb25zLnRyaW1TcGFjZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5TaGlmdChiYWNrd2FyZHMpIHtcbiAgICB2YXIgc2hpZnRlZCA9IG9yaWVudChzaGlmdChnZXRQb3NpdGlvbigpLCBiYWNrd2FyZHMpKTtcbiAgICByZXR1cm4gYmFja3dhcmRzID8gc2hpZnRlZCA+PSAwIDogc2hpZnRlZCA8PSBsaXN0W3Jlc29sdmUoXCJzY3JvbGxXaWR0aFwiKV0gLSByZWN0KHRyYWNrKVtyZXNvbHZlKFwid2lkdGhcIildO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhjZWVkZWRMaW1pdChtYXgsIHBvc2l0aW9uKSB7XG4gICAgcG9zaXRpb24gPSBpc1VuZGVmaW5lZChwb3NpdGlvbikgPyBnZXRQb3NpdGlvbigpIDogcG9zaXRpb247XG4gICAgdmFyIGV4Y2VlZGVkTWluID0gbWF4ICE9PSB0cnVlICYmIG9yaWVudChwb3NpdGlvbikgPCBvcmllbnQoZ2V0TGltaXQoZmFsc2UpKTtcbiAgICB2YXIgZXhjZWVkZWRNYXggPSBtYXggIT09IGZhbHNlICYmIG9yaWVudChwb3NpdGlvbikgPiBvcmllbnQoZ2V0TGltaXQodHJ1ZSkpO1xuICAgIHJldHVybiBleGNlZWRlZE1pbiB8fCBleGNlZWRlZE1heDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIG1vdmU6IG1vdmUsXG4gICAganVtcDoganVtcCxcbiAgICB0cmFuc2xhdGU6IHRyYW5zbGF0ZSxcbiAgICBzaGlmdDogc2hpZnQsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1Bvc2l0aW9uOiB0b1Bvc2l0aW9uLFxuICAgIGdldFBvc2l0aW9uOiBnZXRQb3NpdGlvbixcbiAgICBnZXRMaW1pdDogZ2V0TGltaXQsXG4gICAgZXhjZWVkZWRMaW1pdDogZXhjZWVkZWRMaW1pdCxcbiAgICByZXBvc2l0aW9uOiByZXBvc2l0aW9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIENvbnRyb2xsZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTUgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNS5vbixcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2U1LmVtaXQ7XG5cbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgdG9Qb3NpdGlvbiA9IE1vdmUudG9Qb3NpdGlvbjtcbiAgdmFyIF9Db21wb25lbnRzMiRTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMsXG4gICAgICBpc0Vub3VnaCA9IF9Db21wb25lbnRzMiRTbGlkZXMuaXNFbm91Z2gsXG4gICAgICBnZXRMZW5ndGggPSBfQ29tcG9uZW50czIkU2xpZGVzLmdldExlbmd0aDtcbiAgdmFyIG9taXRFbmQgPSBvcHRpb25zLm9taXRFbmQ7XG4gIHZhciBpc0xvb3AgPSBTcGxpZGUyLmlzKExPT1ApO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgZ2V0TmV4dCA9IGFwcGx5KGdldEFkamFjZW50LCBmYWxzZSk7XG4gIHZhciBnZXRQcmV2ID0gYXBwbHkoZ2V0QWRqYWNlbnQsIHRydWUpO1xuICB2YXIgY3VyckluZGV4ID0gb3B0aW9ucy5zdGFydCB8fCAwO1xuICB2YXIgZW5kSW5kZXg7XG4gIHZhciBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gIHZhciBzbGlkZUNvdW50O1xuICB2YXIgcGVyTW92ZTtcbiAgdmFyIHBlclBhZ2U7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKFtFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNILCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIGluaXQpO1xuICAgIG9uKEVWRU5UX1JFU0laRUQsIG9uUmVzaXplZCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHNsaWRlQ291bnQgPSBnZXRMZW5ndGgodHJ1ZSk7XG4gICAgcGVyTW92ZSA9IG9wdGlvbnMucGVyTW92ZTtcbiAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIGVuZEluZGV4ID0gZ2V0RW5kKCk7XG4gICAgdmFyIGluZGV4ID0gY2xhbXAoY3VyckluZGV4LCAwLCBvbWl0RW5kID8gZW5kSW5kZXggOiBzbGlkZUNvdW50IC0gMSk7XG5cbiAgICBpZiAoaW5kZXggIT09IGN1cnJJbmRleCkge1xuICAgICAgY3VyckluZGV4ID0gaW5kZXg7XG4gICAgICBNb3ZlLnJlcG9zaXRpb24oKTtcbiAgICB9XG4gI
6625H1cblxuICBmdW5jdGlvbiBvblJlc2l6ZWQoKSB7XG4gICAgaWYgKGVuZEluZGV4ICE9PSBnZXRFbmQoKSkge1xuICAgICAgZW1pdChFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28oY29udHJvbCwgYWxsb3dTYW1lSW5kZXgsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFpc0J1c3koKSkge1xuICAgICAgdmFyIGRlc3QgPSBwYXJzZShjb250cm9sKTtcbiAgICAgIHZhciBpbmRleCA9IGxvb3AoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCA+IC0xICYmIChhbGxvd1NhbWVJbmRleCB8fCBpbmRleCAhPT0gY3VyckluZGV4KSkge1xuICAgICAgICBzZXRJbmRleChpbmRleCk7XG4gICAgICAgIE1vdmUubW92ZShkZXN0LCBpbmRleCwgcHJldkluZGV4LCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgY2FsbGJhY2spIHtcbiAgICBDb21wb25lbnRzMi5TY3JvbGwuc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGluZGV4ID0gbG9vcChNb3ZlLnRvSW5kZXgoZ2V0UG9zaXRpb24oKSkpO1xuICAgICAgc2V0SW5kZXgob21pdEVuZCA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogaW5kZXgpO1xuICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlKGNvbnRyb2wpIHtcbiAgICB2YXIgaW5kZXggPSBjdXJySW5kZXg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29udHJvbCkpIHtcbiAgICAgIHZhciBfcmVmID0gY29udHJvbC5tYXRjaCgvKFsrXFwtPD5dKShcXGQrKT8vKSB8fCBbXSxcbiAgICAgICAgICBpbmRpY2F0b3IgPSBfcmVmWzFdLFxuICAgICAgICAgIG51bWJlciA9IF9yZWZbMl07XG5cbiAgICAgIGlmIChpbmRpY2F0b3IgPT09IFwiK1wiIHx8IGluZGljYXRvciA9PT0gXCItXCIpIHtcbiAgICAgICAgaW5kZXggPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArICsoXCJcIiArIGluZGljYXRvciArICgrbnVtYmVyIHx8IDEpKSwgY3VyckluZGV4KTtcbiAgICAgIH0gZWxzZSBpZiAoaW5kaWNhdG9yID09PSBcIj5cIikge1xuICAgICAgICBpbmRleCA9IG51bWJlciA/IHRvSW5kZXgoK251bWJlcikgOiBnZXROZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRpY2F0b3IgPT09IFwiPFwiKSB7XG4gICAgICAgIGluZGV4ID0gZ2V0UHJldih0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBpc0xvb3AgPyBjb250cm9sIDogY2xhbXAoY29udHJvbCwgMCwgZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFkamFjZW50KHByZXYsIGRlc3RpbmF0aW9uKSB7XG4gICAgdmFyIG51bWJlciA9IHBlck1vdmUgfHwgKGhhc0ZvY3VzKCkgPyAxIDogcGVyUGFnZSk7XG4gICAgdmFyIGRlc3QgPSBjb21wdXRlRGVzdEluZGV4KGN1cnJJbmRleCArIG51bWJlciAqIChwcmV2ID8gLTEgOiAxKSwgY3VyckluZGV4LCAhKHBlck1vdmUgfHwgaGFzRm9jdXMoKSkpO1xuXG4gICAgaWYgKGRlc3QgPT09IC0xICYmIGlzU2xpZGUpIHtcbiAgICAgIGlmICghYXBwcm94aW1hdGVseUVxdWFsKGdldFBvc2l0aW9uKCksIGdldExpbWl0KCFwcmV2KSwgMSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXYgPyAwIDogZW5kSW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uID8gZGVzdCA6IGxvb3AoZGVzdCk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlRGVzdEluZGV4KGRlc3QsIGZyb20sIHNuYXBQYWdlKSB7XG4gICAgaWYgKGlzRW5vdWdoKCkgfHwgaGFzRm9jdXMoKSkge1xuICAgICAgdmFyIGluZGV4ID0gY29tcHV0ZU1vdmFibGVEZXN0SW5kZXgoZGVzdCk7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gZGVzdCkge1xuICAgICAgICBmcm9tID0gZGVzdDtcbiAgICAgICAgZGVzdCA9IGluZGV4O1xuICAgICAgICBzbmFwUGFnZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzdCA8IDAgfHwgZGVzdCA+IGVuZEluZGV4KSB7XG4gICAgICAgIGlmICghcGVyTW92ZSAmJiAoYmV0d2VlbigwLCBkZXN0LCBmcm9tLCB0cnVlKSB8fCBiZXR3ZWVuKGVuZEluZGV4LCBmcm9tLCBkZXN0LCB0cnVlKSkpIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZGVzdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0xvb3ApIHtcbiAgICAgICAgICAgIGRlc3QgPSBzbmFwUGFnZSA/IGRlc3QgPCAwID8gLShzbGlkZUNvdW50ICUgcGVyUGFnZSB8fCBwZXJQYWdlKSA6IHNsaWRlQ291bnQgOiBkZXN0O1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZXdpbmQpIHtcbiAgICAgICAgICAgIGRlc3QgPSBkZXN0IDwgMCA/IGVuZEluZGV4IDogMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdCA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNuYXBQYWdlICYmIGRlc3QgIT09IGZyb20pIHtcbiAgICAgICAgICBkZXN0ID0gdG9JbmRleCh0b1BhZ2UoZnJvbSkgKyAoZGVzdCA8IGZyb20gPyAtMSA6IDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXN0ID0gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlTW92YWJsZURlc3RJbmRleChkZXN0KSB7XG4gICAgaWYgKGlzU2xpZGUgJiYgb3B0aW9ucy50cmltU3BhY2UgPT09IFwibW92ZVwiICYmIGRlc3QgIT09IGN1cnJJbmRleCkge1xuICAgICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uID09PSB0b1Bvc2l0aW9uKGRlc3QsIHRydWUpICYmIGJldHdlZW4oZGVzdCwgMCwgU3BsaWRlMi5sZW5ndGggLSAxLCAhb3B0aW9ucy5yZXdpbmQpKSB7XG4gICAgICAgIGRlc3QgPCBjdXJySW5kZXggPyAtLWRlc3QgOiArK2Rlc3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBsb29wKGluZGV4KSB7XG4gICAgcmV0dXJuIGlzTG9vcCA/IChpbmRleCArIHNsaWRlQ291bnQpICUgc2xpZGVDb3VudCB8fCAwIDogaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRFbmQoKSB7XG4gICAgdmFyIGVuZCA9IHNsaWRlQ291bnQgLSAoaGFzRm9jdXMoKSB8fCBpc0xvb3AgJiYgcGVyTW92ZSA/IDEgOiBwZXJQYWdlKTtcblxuICAgI
6625HdoaWxlIChvbWl0RW5kICYmIGVuZC0tID4gMCkge1xuICAgICAgaWYgKHRvUG9zaXRpb24oc2xpZGVDb3VudCAtIDEsIHRydWUpICE9PSB0b1Bvc2l0aW9uKGVuZCwgdHJ1ZSkpIHtcbiAgICAgICAgZW5kKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbGFtcChlbmQsIDAsIHNsaWRlQ291bnQgLSAxKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvSW5kZXgocGFnZSkge1xuICAgIHJldHVybiBjbGFtcChoYXNGb2N1cygpID8gcGFnZSA6IHBlclBhZ2UgKiBwYWdlLCAwLCBlbmRJbmRleCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b1BhZ2UoaW5kZXgpIHtcbiAgICByZXR1cm4gaGFzRm9jdXMoKSA/IG1pbihpbmRleCwgZW5kSW5kZXgpIDogZmxvb3IoKGluZGV4ID49IGVuZEluZGV4ID8gc2xpZGVDb3VudCAtIDEgOiBpbmRleCkgLyBwZXJQYWdlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvRGVzdChkZXN0aW5hdGlvbikge1xuICAgIHZhciBjbG9zZXN0ID0gTW92ZS50b0luZGV4KGRlc3RpbmF0aW9uKTtcbiAgICByZXR1cm4gaXNTbGlkZSA/IGNsYW1wKGNsb3Nlc3QsIDAsIGVuZEluZGV4KSA6IGNsb3Nlc3Q7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRJbmRleChpbmRleCkge1xuICAgIGlmIChpbmRleCAhPT0gY3VyckluZGV4KSB7XG4gICAgICBwcmV2SW5kZXggPSBjdXJySW5kZXg7XG4gICAgICBjdXJySW5kZXggPSBpbmRleDtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRJbmRleChwcmV2KSB7XG4gICAgcmV0dXJuIHByZXYgPyBwcmV2SW5kZXggOiBjdXJySW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBoYXNGb2N1cygpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKG9wdGlvbnMuZm9jdXMpIHx8IG9wdGlvbnMuaXNOYXZpZ2F0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNCdXN5KCkge1xuICAgIHJldHVybiBTcGxpZGUyLnN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pICYmICEhb3B0aW9ucy53YWl0Rm9yVHJhbnNpdGlvbjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGdvOiBnbyxcbiAgICBzY3JvbGw6IHNjcm9sbCxcbiAgICBnZXROZXh0OiBnZXROZXh0LFxuICAgIGdldFByZXY6IGdldFByZXYsXG4gICAgZ2V0QWRqYWNlbnQ6IGdldEFkamFjZW50LFxuICAgIGdldEVuZDogZ2V0RW5kLFxuICAgIHNldEluZGV4OiBzZXRJbmRleCxcbiAgICBnZXRJbmRleDogZ2V0SW5kZXgsXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICB0b1BhZ2U6IHRvUGFnZSxcbiAgICB0b0Rlc3Q6IHRvRGVzdCxcbiAgICBoYXNGb2N1czogaGFzRm9jdXMsXG4gICAgaXNCdXN5OiBpc0J1c3lcbiAgfTtcbn1cblxudmFyIFhNTF9OQU1FX1NQQUNFID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xudmFyIFBBVEggPSBcIm0xNS41IDAuOTMyLTQuMyA0LjM4IDE0LjUgMTQuNi0xNC41IDE0LjUgNC4zIDQuNCAxNC42LTE0LjYgNC40LTQuMy00LjQtNC40LTE0LjYtMTQuNnpcIjtcbnZhciBTSVpFID0gNDA7XG5cbmZ1bmN0aW9uIEFycm93cyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBiaW5kID0gZXZlbnQuYmluZCxcbiAgICAgIGVtaXQgPSBldmVudC5lbWl0O1xuICB2YXIgY2xhc3NlcyA9IG9wdGlvbnMuY2xhc3NlcyxcbiAgICAgIGkxOG4gPSBvcHRpb25zLmkxOG47XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gIHZhciBwbGFjZWhvbGRlciA9IEVsZW1lbnRzLmFycm93cyxcbiAgICAgIHRyYWNrID0gRWxlbWVudHMudHJhY2s7XG4gIHZhciB3cmFwcGVyID0gcGxhY2Vob2xkZXI7XG4gIHZhciBwcmV2ID0gRWxlbWVudHMucHJldjtcbiAgdmFyIG5leHQgPSBFbGVtZW50cy5uZXh0O1xuICB2YXIgY3JlYXRlZDtcbiAgdmFyIHdyYXBwZXJDbGFzc2VzO1xuICB2YXIgYXJyb3dzID0ge307XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIHJlbW91bnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGVuYWJsZWQgPSBvcHRpb25zLmFycm93cztcblxuICAgIGlmIChlbmFibGVkICYmICEocHJldiAmJiBuZXh0KSkge1xuICAgICAgY3JlYXRlQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgYXNzaWduKGFycm93cywge1xuICAgICAgICBwcmV2OiBwcmV2LFxuICAgICAgICBuZXh0OiBuZXh0XG4gICAgICB9KTtcbiAgICAgIGRpc3BsYXkod3JhcHBlciwgZW5hYmxlZCA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgICBhZGRDbGFzcyh3cmFwcGVyLCB3cmFwcGVyQ2xhc3NlcyA9IENMQVNTX0FSUk9XUyArIFwiLS1cIiArIG9wdGlvbnMuZGlyZWN0aW9uKTtcblxuICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgbGlzdGVuKCk7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICBzZXRBdHRyaWJ1dGUoW3ByZXYsIG5leHRdLCBBUklBX0NPTlRST0xTLCB0cmFjay5pZCk7XG4gICAgICAgIGVtaXQoRVZFTlRfQVJST1dTX01PVU5URUQsIHByZXYsIG5leHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICAgIHJlbW92ZUNsYXNzKHdyYXBwZXIsIHdyYXBwZXJDbGFzc2VzKTtcblxuICAgIGlmIChjcmVhdGVkKSB7XG4gICAgICByZW1vdmUocGxhY2Vob2xkZXIgPyBbcHJldiwgbmV4dF0gOiB3cmFwcGVyKTtcbiAgICAgIHByZXYgPSBuZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQXR0cmlidXRlKFtwcmV2LCBuZXh0XSwgQUxMX0FUVFJJQlVURVMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1NDUk9MTEVELCBFVkVOVF9FTkRfSU5ERVhfQ0hBTkdFRF0sIHVwZGF0ZSk7XG4gICAgYmluZChuZXh0LCBcImNsaWNrXCIsIGFwcGx5KGdvLCBcIj5cIikpO1xuICAgIGJpbmQocHJldiwgXCJjbGlja1wiLCBhcHBseShnbywgXCI8XCIpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKGNvbnRyb2wpIHtcbiAgICBDb250cm9sbGVyLmdvKGNvbnRyb2wsIHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3dzKCkge1xuICAgIHdyYXBwZXIgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJkaXZcIiwgY2xhc3Nlcy5hcnJvd3MpO1xuICAgIHByZXYgPSBjcmVhdGVBcnJvdyh0cnVlKTtcbiAgICBuZXh0ID0gY3JlYXRlQXJyb3coZmFsc2UpO1xuICAgIGNyZWF0ZWQgPSB0cnVlO1xuICAgIGFwcGVuZCh3cmFwcGVyLCBbcHJldiwgbmV4dF0pO1xuICAgICFwbGFjZWhvbGRlciAmJiBiZWZvcmUo
6625d3JhcHBlciwgdHJhY2spO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQXJyb3cocHJldjIpIHtcbiAgICB2YXIgYXJyb3cgPSBcIjxidXR0b24gY2xhc3M9XFxcIlwiICsgY2xhc3Nlcy5hcnJvdyArIFwiIFwiICsgKHByZXYyID8gY2xhc3Nlcy5wcmV2IDogY2xhc3Nlcy5uZXh0KSArIFwiXFxcIiB0eXBlPVxcXCJidXR0b25cXFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGZvY3VzYWJsZT1cXFwiZmFsc2VcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKG9wdGlvbnMuYXJyb3dQYXRoIHx8IFBBVEgpICsgXCJcXFwiIC8+XCI7XG4gICAgcmV0dXJuIHBhcnNlSHRtbChhcnJvdyk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHByZXYgJiYgbmV4dCkge1xuICAgICAgdmFyIGluZGV4ID0gU3BsaWRlMi5pbmRleDtcbiAgICAgIHZhciBwcmV2SW5kZXggPSBDb250cm9sbGVyLmdldFByZXYoKTtcbiAgICAgIHZhciBuZXh0SW5kZXggPSBDb250cm9sbGVyLmdldE5leHQoKTtcbiAgICAgIHZhciBwcmV2TGFiZWwgPSBwcmV2SW5kZXggPiAtMSAmJiBpbmRleCA8IHByZXZJbmRleCA/IGkxOG4ubGFzdCA6IGkxOG4ucHJldjtcbiAgICAgIHZhciBuZXh0TGFiZWwgPSBuZXh0SW5kZXggPiAtMSAmJiBpbmRleCA+IG5leHRJbmRleCA/IGkxOG4uZmlyc3QgOiBpMThuLm5leHQ7XG4gICAgICBwcmV2LmRpc2FibGVkID0gcHJldkluZGV4IDwgMDtcbiAgICAgIG5leHQuZGlzYWJsZWQgPSBuZXh0SW5kZXggPCAwO1xuICAgICAgc2V0QXR0cmlidXRlKHByZXYsIEFSSUFfTEFCRUwsIHByZXZMYWJlbCk7XG4gICAgICBzZXRBdHRyaWJ1dGUobmV4dCwgQVJJQV9MQUJFTCwgbmV4dExhYmVsKTtcbiAgICAgIGVtaXQoRVZFTlRfQVJST1dTX1VQREFURUQsIHByZXYsIG5leHQsIHByZXZJbmRleCwgbmV4dEluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFycm93czogYXJyb3dzLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlXG4gIH07XG59XG5cbnZhciBJTlRFUlZBTF9EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItaW50ZXJ2YWxcIjtcblxuZnVuY3Rpb24gQXV0b3BsYXkoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTYgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNi5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U2LmJpbmQsXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlNi5lbWl0O1xuXG4gIHZhciBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChvcHRpb25zLmludGVydmFsLCBTcGxpZGUyLmdvLmJpbmQoU3BsaWRlMiwgXCI+XCIpLCBvbkFuaW1hdGlvbkZyYW1lKTtcbiAgdmFyIGlzUGF1c2VkID0gaW50ZXJ2YWwuaXNQYXVzZWQ7XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgX0NvbXBvbmVudHMyJEVsZW1lbnRzNCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgcm9vdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czQucm9vdCxcbiAgICAgIHRvZ2dsZSA9IF9Db21wb25lbnRzMiRFbGVtZW50czQudG9nZ2xlO1xuICB2YXIgYXV0b3BsYXkgPSBvcHRpb25zLmF1dG9wbGF5O1xuICB2YXIgaG92ZXJlZDtcbiAgdmFyIGZvY3VzZWQ7XG4gIHZhciBzdG9wcGVkID0gYXV0b3BsYXkgPT09IFwicGF1c2VcIjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAoYXV0b3BsYXkpIHtcbiAgICAgIGxpc3RlbigpO1xuICAgICAgdG9nZ2xlICYmIHNldEF0dHJpYnV0ZSh0b2dnbGUsIEFSSUFfQ09OVFJPTFMsIEVsZW1lbnRzLnRyYWNrLmlkKTtcbiAgICAgIHN0b3BwZWQgfHwgcGxheSgpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgIGlmIChvcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgYmluZChyb290LCBcIm1vdXNlZW50ZXIgbW91c2VsZWF2ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBob3ZlcmVkID0gZS50eXBlID09PSBcIm1vdXNlZW50ZXJcIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF1c2VPbkZvY3VzKSB7XG4gICAgICBiaW5kKHJvb3QsIFwiZm9jdXNpbiBmb2N1c291dFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBmb2N1c2VkID0gZS50eXBlID09PSBcImZvY3VzaW5cIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRvZ2dsZSkge1xuICAgICAgYmluZCh0b2dnbGUsIFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBzdG9wcGVkID8gcGxheSgpIDogcGF1c2UodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBvbihbRVZFTlRfTU9WRSwgRVZFTlRfU0NST0xMLCBFVkVOVF9SRUZSRVNIXSwgaW50ZXJ2YWwucmV3aW5kKTtcbiAgICBvbihFVkVOVF9NT1ZFLCBvbk1vdmUpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGxheSgpIHtcbiAgICBpZiAoaXNQYXVzZWQoKSAmJiBDb21wb25lbnRzMi5TbGlkZXMuaXNFbm91Z2goKSkge1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoIW9wdGlvbnMucmVzZXRQcm9ncmVzcyk7XG4gICAgICBmb2N1c2VkID0gaG92ZXJlZCA9IHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZShzdG9wKSB7XG4gICAgaWYgKHN0b3AgPT09IHZvaWQgMCkge1xuICAgICAgc3RvcCA9IHRydWU7XG4gICAgfVxuXG4gICAgc3RvcHBlZCA9ICEhc3RvcDtcbiAgICB1cGRhdGUoKTtcblxuICAgIGlmICghaXNQYXVzZWQoKSkge1xuICAgICAgaW50ZXJ2YWwucGF1c2UoKTtcbiAgICAgIGVtaXQoRVZFTlRfQVVUT1BMQVlfUEFVU0UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGF1dG9Ub2dnbGUoKSB7XG4gICAgaWYgKCFzdG9wcGVkKSB7XG4gICAgICBob3ZlcmVkIHx8IGZvY3VzZWQgPyBwYXVzZShmYWxzZSkgOiBwbGF5KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICh0b2dnbGUpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHRvZ2dsZSwgQ0xBU1NfQUNUSVZFLCAhc3RvcHBlZCk7XG4gICAgICBzZXRBdHRyaWJ1dGUodG9nZ2xlLCBBUklBX0xBQkVMLCBvcHRpb25zLmkxOG5bc3RvcHBlZCA/IFwicGxheVwiIDogXCJwYXVzZVwiXSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25BbmltYXRpb25GcmFtZShyYXRlKSB7XG4gICAgdmFyIGJhciA9IEVsZW1lbnRzLmJhcjtcbiAgICBiYXIgJiYgc3R5bGUoYmFyLCBcIndpZHRoXCIsIHJhdGUgKiAxMDAgKyBcIiVcIik7XG4gICAgZW1pdChFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCByYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW92ZShpbmRleCkge1xuICAgIHZhciBTbGlkZSA9IENvbXBvbmVudHMyLlNsaWRlcy5nZXRBdChpbmRleCk7XG4gICAgaW50ZXJ2YWwuc2V0KFNsaWRlICYmICtnZXR
6625BdHRyaWJ1dGUoU2xpZGUuc2xpZGUsIElOVEVSVkFMX0RBVEFfQVRUUklCVVRFKSB8fCBvcHRpb25zLmludGVydmFsKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGludGVydmFsLmNhbmNlbCxcbiAgICBwbGF5OiBwbGF5LFxuICAgIHBhdXNlOiBwYXVzZSxcbiAgICBpc1BhdXNlZDogaXNQYXVzZWRcbiAgfTtcbn1cblxuZnVuY3Rpb24gQ292ZXIoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTcgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlNy5vbjtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAob3B0aW9ucy5jb3Zlcikge1xuICAgICAgb24oRVZFTlRfTEFaWUxPQURfTE9BREVELCBhcHBseSh0b2dnbGUsIHRydWUpKTtcbiAgICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9VUERBVEVELCBFVkVOVF9SRUZSRVNIXSwgYXBwbHkoY292ZXIsIHRydWUpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjb3Zlcihjb3ZlcjIpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHZhciBpbWcgPSBjaGlsZChTbGlkZS5jb250YWluZXIgfHwgU2xpZGUuc2xpZGUsIFwiaW1nXCIpO1xuXG4gICAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgICAgdG9nZ2xlKGNvdmVyMiwgaW1nLCBTbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2dnbGUoY292ZXIyLCBpbWcsIFNsaWRlKSB7XG4gICAgU2xpZGUuc3R5bGUoXCJiYWNrZ3JvdW5kXCIsIGNvdmVyMiA/IFwiY2VudGVyL2NvdmVyIG5vLXJlcGVhdCB1cmwoXFxcIlwiICsgaW1nLnNyYyArIFwiXFxcIilcIiA6IFwiXCIsIHRydWUpO1xuICAgIGRpc3BsYXkoaW1nLCBjb3ZlcjIgPyBcIm5vbmVcIiA6IFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogYXBwbHkoY292ZXIsIGZhbHNlKVxuICB9O1xufVxuXG52YXIgQk9VTkNFX0RJRkZfVEhSRVNIT0xEID0gMTA7XG52YXIgQk9VTkNFX0RVUkFUSU9OID0gNjAwO1xudmFyIEZSSUNUSU9OX0ZBQ1RPUiA9IDAuNjtcbnZhciBCQVNFX1ZFTE9DSVRZID0gMS41O1xudmFyIE1JTl9EVVJBVElPTiA9IDgwMDtcblxuZnVuY3Rpb24gU2Nyb2xsKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2U4ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTgub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlOC5lbWl0O1xuXG4gIHZhciBzZXQgPSBTcGxpZGUyLnN0YXRlLnNldDtcbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlO1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZ2V0TGltaXQgPSBNb3ZlLmdldExpbWl0LFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdCxcbiAgICAgIHRyYW5zbGF0ZSA9IE1vdmUudHJhbnNsYXRlO1xuICB2YXIgaXNTbGlkZSA9IFNwbGlkZTIuaXMoU0xJREUpO1xuICB2YXIgaW50ZXJ2YWw7XG4gIHZhciBjYWxsYmFjaztcbiAgdmFyIGZyaWN0aW9uID0gMTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBvbihFVkVOVF9NT1ZFLCBjbGVhcik7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBjYW5jZWwpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsKGRlc3RpbmF0aW9uLCBkdXJhdGlvbiwgc25hcCwgb25TY3JvbGxlZCwgbm9Db25zdHJhaW4pIHtcbiAgICB2YXIgZnJvbSA9IGdldFBvc2l0aW9uKCk7XG4gICAgY2xlYXIoKTtcblxuICAgIGlmIChzbmFwICYmICghaXNTbGlkZSB8fCAhZXhjZWVkZWRMaW1pdCgpKSkge1xuICAgICAgdmFyIHNpemUgPSBDb21wb25lbnRzMi5MYXlvdXQuc2xpZGVyU2l6ZSgpO1xuICAgICAgdmFyIG9mZnNldCA9IHNpZ24oZGVzdGluYXRpb24pICogc2l6ZSAqIGZsb29yKGFicyhkZXN0aW5
6625hdGlvbikgLyBzaXplKSB8fCAwO1xuICAgICAgZGVzdGluYXRpb24gPSBNb3ZlLnRvUG9zaXRpb24oQ29tcG9uZW50czIuQ29udHJvbGxlci50b0Rlc3QoZGVzdGluYXRpb24gJSBzaXplKSkgKyBvZmZzZXQ7XG4gICAgfVxuXG4gICAgdmFyIG5vRGlzdGFuY2UgPSBhcHByb3hpbWF0ZWx5RXF1YWwoZnJvbSwgZGVzdGluYXRpb24sIDEpO1xuICAgIGZyaWN0aW9uID0gMTtcbiAgICBkdXJhdGlvbiA9IG5vRGlzdGFuY2UgPyAwIDogZHVyYXRpb24gfHwgbWF4KGFicyhkZXN0aW5hdGlvbiAtIGZyb20pIC8gQkFTRV9WRUxPQ0lUWSwgTUlOX0RVUkFUSU9OKTtcbiAgICBjYWxsYmFjayA9IG9uU2Nyb2xsZWQ7XG4gICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24sIG9uRW5kLCBhcHBseSh1cGRhdGUsIGZyb20sIGRlc3RpbmF0aW9uLCBub0NvbnN0cmFpbiksIDEpO1xuICAgIHNldChTQ1JPTExJTkcpO1xuICAgIGVtaXQoRVZFTlRfU0NST0xMKTtcbiAgICBpbnRlcnZhbC5zdGFydCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQoKSB7XG4gICAgc2V0KElETEUpO1xuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgZW1pdChFVkVOVF9TQ1JPTExFRCk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoZnJvbSwgdG8sIG5vQ29uc3RyYWluLCByYXRlKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgICB2YXIgdGFyZ2V0ID0gZnJvbSArICh0byAtIGZyb20pICogZWFzaW5nKHJhdGUpO1xuICAgIHZhciBkaWZmID0gKHRhcmdldCAtIHBvc2l0aW9uKSAqIGZyaWN0aW9uO1xuICAgIHRyYW5zbGF0ZShwb3NpdGlvbiArIGRpZmYpO1xuXG4gICAgaWYgKGlzU2xpZGUgJiYgIW5vQ29uc3RyYWluICYmIGV4Y2VlZGVkTGltaXQoKSkge1xuICAgICAgZnJpY3Rpb24gKj0gRlJJQ1RJT05fRkFDVE9SO1xuXG4gICAgICBpZiAoYWJzKGRpZmYpIDwgQk9VTkNFX0RJRkZfVEhSRVNIT0xEKSB7XG4gICAgICAgIHNjcm9sbChnZXRMaW1pdChleGNlZWRlZExpbWl0KHRydWUpKSwgQk9VTkNFX0RVUkFUSU9OLCBmYWxzZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmIChpbnRlcnZhbCkge1xuICAgICAgaW50ZXJ2YWwuY2FuY2VsKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmIChpbnRlcnZhbCAmJiAhaW50ZXJ2YWwuaXNQYXVzZWQoKSkge1xuICAgICAgY2xlYXIoKTtcbiAgICAgIG9uRW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZWFzaW5nKHQpIHtcbiAgICB2YXIgZWFzaW5nRnVuYyA9IG9wdGlvbnMuZWFzaW5nRnVuYztcbiAgICByZXR1cm4gZWFzaW5nRnVuYyA/IGVhc2luZ0Z1bmModCkgOiAxIC0gTWF0aC5wb3coMSAtIHQsIDQpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogY2xlYXIsXG4gICAgc2Nyb2xsOiBzY3JvbGwsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TID0ge1xuICBwYXNzaXZlOiBmYWxzZSxcbiAgY2FwdHVyZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gRHJhZyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlOSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U5Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTkuZW1pdCxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2U5LnVuYmluZDtcblxuICB2YXIgc3RhdGUgPSBTcGxpZGUyLnN0YXRlO1xuICB2YXIgTW92ZSA9IENvbXBvbmVudHMyLk1vdmUsXG4gICAgICBTY3JvbGwgPSBDb21wb25lbnRzMi5TY3JvbGwsXG4gICAgICBDb250cm9sbGVyID0gQ29tcG9uZW50czIuQ29udHJvbGxlcixcbiAgICAgIHRyYWNrID0gQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssXG4gICAgICByZWR1Y2UgPSBDb21wb25lbnRzMi5NZWRpYS5yZWR1Y2U7XG4gIHZhciBfQ29tcG9uZW50czIkRGlyZWN0aW8yID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLFxuICAgICAgcmVzb2x2ZSA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIucmVzb2x2ZSxcbiAgICAgIG9yaWVudCA9IF9Db21wb25lbnRzMiREaXJlY3RpbzIub3JpZW50O1xuICB2YXIgZ2V0UG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uLFxuICAgICAgZXhjZWVkZWRMaW1pdCA9IE1vdmUuZXhjZWVkZWRMaW1pdDtcbiAgdmFyIGJhc2VQb3NpdGlvbjtcbiAgdmFyIGJhc2VFdmVudDtcbiAgdmFyIHByZXZCYXNlRXZlbnQ7XG4gIHZhciBpc0ZyZWU7XG4gIHZhciBkcmFnZ2luZztcbiAgdmFyIGV4Y2VlZGVkID0gZmFsc2U7XG4gIHZhciBjbGlja1ByZXZlbn
6625RlZDtcbiAgdmFyIGRpc2FibGVkO1xuICB2YXIgdGFyZ2V0O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfTU9WRV9FVkVOVFMsIG5vb3AsIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBQT0lOVEVSX1VQX0VWRU5UUywgbm9vcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfRE9XTl9FVkVOVFMsIG9uUG9pbnRlckRvd24sIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICBiaW5kKHRyYWNrLCBcImNsaWNrXCIsIG9uQ2xpY2ssIHtcbiAgICAgIGNhcHR1cmU6IHRydWVcbiAgICB9KTtcbiAgICBiaW5kKHRyYWNrLCBcImRyYWdzdGFydFwiLCBwcmV2ZW50KTtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfVVBEQVRFRF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgZHJhZyA9IG9wdGlvbnMuZHJhZztcbiAgICBkaXNhYmxlKCFkcmFnKTtcbiAgICBpc0ZyZWUgPSBkcmFnID09PSBcImZyZWVcIjtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlckRvd24oZSkge1xuICAgIGNsaWNrUHJldmVudGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB2YXIgaXNUb3VjaCA9IGlzVG91Y2hFdmVudChlKTtcblxuICAgICAgaWYgKGlzRHJhZ2dhYmxlKGUudGFyZ2V0KSAmJiAoaXNUb3VjaCB8fCAhZS5idXR0b24pKSB7XG4gICAgICAgIGlmICghQ29udHJvbGxlci5pc0J1c3koKSkge1xuICAgICAgICAgIHRhcmdldCA9IGlzVG91Y2ggPyB0cmFjayA6IHdpbmRvdztcbiAgICAgICAgICBkcmFnZ2luZyA9IHN0YXRlLmlzKFtNT1ZJTkcsIFNDUk9MTElOR10pO1xuICAgICAgICAgIHByZXZCYXNlRXZlbnQgPSBudWxsO1xuICAgICAgICAgIGJpbmQodGFyZ2V0LCBQT0lOVEVSX01PVkVfRVZFTlRTLCBvblBvaW50ZXJNb3ZlLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgICAgICAgYmluZCh0YXJnZXQsIFBPSU5URVJfVVBfRVZFTlRTLCBvblBvaW50ZXJVcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgICAgICAgIE1vdmUuY2FuY2VsKCk7XG4gICAgICAgICAgU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlck1vdmUoZSkge1xuICAgIGlmICghc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoRFJBR0dJTkcpO1xuICAgICAgZW1pdChFVkVOVF9EUkFHKTtcbiAgICB9XG5cbiAgICBpZiAoZS5jYW5jZWxhYmxlKSB7XG4gICAgICBpZiAoZHJhZ2dpbmcpIHtcbiAgICAgICAgTW92ZS50cmFuc2xhdGUoYmFzZVBvc2l0aW9uICsgY29uc3RyYWluKGRpZmZDb29yZChlKSkpO1xuICAgICAgICB2Y
6625XIgZXhwaXJlZCA9IGRpZmZUaW1lKGUpID4gTE9HX0lOVEVSVkFMO1xuICAgICAgICB2YXIgaGFzRXhjZWVkZWQgPSBleGNlZWRlZCAhPT0gKGV4Y2VlZGVkID0gZXhjZWVkZWRMaW1pdCgpKTtcblxuICAgICAgICBpZiAoZXhwaXJlZCB8fCBoYXNFeGNlZWRlZCkge1xuICAgICAgICAgIHNhdmUoZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjbGlja1ByZXZlbnRlZCA9IHRydWU7XG4gICAgICAgIGVtaXQoRVZFTlRfRFJBR0dJTkcpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfSBlbHNlIGlmIChpc1NsaWRlckRpcmVjdGlvbihlKSkge1xuICAgICAgICBkcmFnZ2luZyA9IHNob3VsZFN0YXJ0KGUpO1xuICAgICAgICBwcmV2ZW50KGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGUpIHtcbiAgICBpZiAoc3RhdGUuaXMoRFJBR0dJTkcpKSB7XG4gICAgICBzdGF0ZS5zZXQoSURMRSk7XG4gICAgICBlbWl0KEVWRU5UX0RSQUdHRUQpO1xuICAgIH1cblxuICAgIGlmIChkcmFnZ2luZykge1xuICAgICAgbW92ZShlKTtcbiAgICAgIHByZXZlbnQoZSk7XG4gICAgfVxuXG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9NT1ZFX0VWRU5UUywgb25Qb2ludGVyTW92ZSk7XG4gICAgdW5iaW5kKHRhcmdldCwgUE9JTlRFUl9VUF9FVkVOVFMsIG9uUG9pbnRlclVwKTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCAmJiBjbGlja1ByZXZlbnRlZCkge1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlKGUpIHtcbiAgICBwcmV2QmFzZUV2ZW50ID0gYmFzZUV2ZW50O1xuICAgIGJhc2VFdmVudCA9IGU7XG4gICAgYmFzZVBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmUoZSkge1xuICAgIHZhciB2ZWxvY2l0eSA9IGNvbXB1dGVWZWxvY2l0eShlKTtcbiAgICB2YXIgZGVzdGluYXRpb24gPSBjb21wdXRlRGVzdGluYXRpb24odmVsb2NpdHkpO1xuICAgIHZhciByZXdpbmQgPSBvcHRpb25zLnJld2luZCAmJiBvcHRpb25zLnJld2luZEJ5RHJhZztcbiAgICByZWR1Y2UoZmFsc2UpO1xuXG4gICAgaWYgKGlzRnJlZSkge1xuICAgICAgQ29udHJvbGxlci5zY3JvbGwoZGVzdGluYXRpb24sIDAsIG9wdGlvbnMuc25hcCk7XG4gICAgfSBlbHNlIGlmIChTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICBDb250cm9sbGVyLmdvKG9yaWVudChzaWduKHZlbG9jaXR5KSkgPCAwID8gcmV3aW5kID8gXCI8XCIgOiBcIi1cIiA6IHJld2luZCA/IFwiPlwiIDogXCIrXCIpO1xuICAgIH0gZWxzZSBpZiAoU3BsaWRlMi5pcyhTTElERSkgJiYgZXhjZWVkZWQgJiYgcmV3aW5kKSB7XG4gICAgICBDb250cm9sbGVyLmdvKGV4Y2VlZGVkTGltaXQodHJ1ZSkgPyBcIj5cIiA6IFwiPFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ29udHJvbGxlci5nbyhDb250cm9sbGVyLnRvRGVzdChkZXN0aW5hdGlvbiksIHRydWUpO1xuICAgIH1cblxuICAgIHJlZHVjZSh0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFN0YXJ0KGUpIHtcbiAgICB2YXIgdGhyZXNob2xkcyA9IG9wdGlvbnMuZHJhZ01pblRocmVzaG9sZDtcbiAgICB2YXIgaXNPYmogPSBpc09iamVjdCh0aHJlc2hvbGRzKTtcbiAgICB2YXIgbW91c2UgPSBpc09iaiAmJiB0aHJlc2hvbGRzLm1vdXNlIHx8IDA7XG4gICAgdmFyIHRvdWNoID0gKGlzT2JqID8gdGhyZXNob2xkcy50b3VjaCA6ICt0aHJlc2hvbGRzKSB8fCAxMDtcbiAgICByZXR1cm4gYWJzKGRpZmZDb29yZChlKSkgPiAoaXNUb3VjaEV2ZW50KGUpID8gdG91Y2ggOiBtb3VzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1NsaWRlckRpcmVjdGlvbihlKSB7XG4gICAgcmV0dXJuIGFicyhkaWZmQ29vcmQoZSkpID4gYWJzKGRpZmZDb29yZChlLCB0cnVlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb21wdXRlVmVsb2NpdHkoZSkge1xuICAgIGlmIChTcGxpZGUyLmlzKExPT1ApIHx8ICFleGNlZWRlZCkge1xuICAgICAgdmFyIHRpbWUgPSBkaWZmVGltZShlKTtcblxuICAgICAgaWYgKHRpbWUgJiYgdGltZSA8IExPR19JTlRFUlZBTCkge1xuICAgICAgICByZXR1cm4gZGlmZkNvb3JkKGUpIC8gdGltZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0aW5hdGlvbih2ZWxvY2l0eSkge1xuICAgIHJldHVybiBnZXRQb3NpdGlvbigpICsgc2lnbih2ZWxvY2l0eSkgKiBtaW4oYWJzKHZlbG9jaXR5KSAqIChvcHRpb25zLmZsaWNrUG93ZXIgfHwgNjAwKSwgaXNGcmVlID8gSW5maW5pdHkgOiBDb21wb25lbnRzMi5MYXlvdXQubGlzdFNpemUoKSAqIChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlmZkNvb3JkKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gY29vcmRPZihlLCBvcnRob2dvbmFsKSAtIGNvb3JkT2YoZ2V0QmFzZUV2ZW50KGUpLCBvcnRob2dvbmFsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpZmZUaW1lKGUpIHtcbiAgICByZXR1cm4gdGltZU9mKGUpIC0gdGltZU9mKGdldEJhc2VFdmVudChlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCYXNlRXZlbnQoZSkge1xuICAgIHJldHVybiBiYXNlRXZlbnQgPT09IGUgJiYgcHJldkJhc2VFdmVudCB8fCBiYXNlRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBjb29yZE9mKGUsIG9ydGhvZ29uYWwpIHtcbiAgICByZXR1cm4gKGlzVG91Y2hFdmVudChlKSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0gOiBlKVtcInBhZ2VcIiArIHJlc29sdmUob3J0aG9nb25hbCA/IFwiWVwiIDogXCJYXCIpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN0cmFpbihkaWZmKSB7XG4gICAgcmV0dXJuIGRpZmYgLyAoZXhjZWVkZWQgJiYgU3BsaWRlMi5pcyhTTElERSkgPyBGUklDVElPTiA6IDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNEcmFnZ2FibGUodGFyZ2V0Mikge1xuICAgIHZhciBub0RyYWcgPSBvcHRpb25zLm5vRHJhZztcbiAgICByZXR1cm4gIW1hdGNoZXModGFyZ2V0MiwgXCIuXCIgKyBDTEFTU19QQUdJTkFUSU9OX1BBR0UgKyBcIiwgLlwiICsgQ0xBU1NfQVJST1cpICYmICghbm9EcmFnIHx8ICFtYXRjaGVzKHRhcmdldDIsIG5vRHJhZykpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGUpIHtcbiAgICByZXR1cm4gdHlwZW9mIFRvdWNoRXZlbnQgIT09IFwidW5kZWZpbmVkXCIgJiYgZSBpbnN0YW5jZW9mIFRvdWNoRXZlbnQ7XG4gIH1cblxuICBmdW5jdGlvbiBpc0RyYWdnaW5nKCkge1xuICAgIHJldHVybi
6625BkcmFnZ2luZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUodmFsdWUpIHtcbiAgICBkaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGlzYWJsZTogZGlzYWJsZSxcbiAgICBpc0RyYWdnaW5nOiBpc0RyYWdnaW5nXG4gIH07XG59XG5cbnZhciBOT1JNQUxJWkFUSU9OX01BUCA9IHtcbiAgU3BhY2ViYXI6IFwiIFwiLFxuICBSaWdodDogQVJST1dfUklHSFQsXG4gIExlZnQ6IEFSUk9XX0xFRlQsXG4gIFVwOiBBUlJPV19VUCxcbiAgRG93bjogQVJST1dfRE9XTlxufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplS2V5KGtleSkge1xuICBrZXkgPSBpc1N0cmluZyhrZXkpID8ga2V5IDoga2V5LmtleTtcbiAgcmV0dXJuIE5PUk1BTElaQVRJT05fTUFQW2tleV0gfHwga2V5O1xufVxuXG52YXIgS0VZQk9BUkRfRVZFTlQgPSBcImtleWRvd25cIjtcblxuZnVuY3Rpb24gS2V5Ym9hcmQoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEwID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEwLm9uLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTEwLmJpbmQsXG4gICAgICB1bmJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMC51bmJpbmQ7XG5cbiAgdmFyIHJvb3QgPSBTcGxpZGUyLnJvb3Q7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLnJlc29sdmU7XG4gIHZhciB0YXJnZXQ7XG4gIHZhciBkaXNhYmxlZDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgZGVzdHJveSk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgaW5pdCk7XG4gICAgb24oRVZFTlRfTU9WRSwgb25Nb3ZlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIGtleWJvYXJkID0gb3B0aW9ucy5rZXlib2FyZDtcblxuICAgIGlmIChrZXlib2FyZCkge1xuICAgICAgdGFyZ2V0ID0ga2V5Ym9hcmQgPT09IFwiZ2xvYmFsXCIgPyB3aW5kb3cgOiByb290O1xuICAgICAgYmluZCh0YXJnZXQsIEtFWUJPQVJEX0VWRU5ULCBvbktleWRvd24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdW5iaW5kKHRhcmdldCwgS0VZQk9BUkRfRVZFTlQpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZSh2YWx1ZSkge1xuICAgIGRpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdmUoKSB7XG4gICAgdmFyIF9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICBuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBkaXNhYmxlZCA9IF9kaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihlKSB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleShlKTtcblxuICAgICAgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSByZXNvbHZlKEFSUk9XX1JJR0hUKSkge1xuICAgICAgICBTcGxpZGUyLmdvKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIGRpc2FibGU6IGRpc2FibGVcbiAgfTtcbn1cblxudmFyIFNSQ19EQVRBX0FUVFJJQlVURSA9IERBVEFfQVRUUklCVVRFICsgXCItbGF6eVwiO1xudmFyIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSA9IFNSQ19EQVRBX0FUVFJJQlVURSArIFwiLXNyY3NldFwiO1xudmFyIElNQUdFX1NFTEVDVE9SID0gXCJbXCIgKyBTUkNfREFUQV9BVFRSSUJVVEUgKyBcIl0sIFtcIiArIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSArIFwiXVwiO1xuXG5mdW5jdGlvbiBMYXp5TG9hZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTEgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMTEub24sXG4gICAgICBvZmYgPSBfRXZlbnRJbnRlcmZhY2UxMS5vZmYsXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMTEuYmluZCxcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2UxMS5lbWl0O1xuXG4gIHZhciBpc1NlcXVlbnRpYWwgPSBvcHRpb25zLmxhenlMb2FkID09PSBcInNlcXVlbnRpYWxcIjtcbiAgdmFyIGV2ZW50cyA9IFtFVkVOVF9NT1ZFRCwgRVZFTlRfU0NST0xMRURdO1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChvcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICBpbml0KCk7XG4gICAgICBvbihFVkVOVF9SRUZSRVNILCBpbml0KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGVtcHR5KGVudHJpZXMpO1xuICAgIHJlZ2lzdGVyKCk7XG5cbiAgICBpZiAoaXNTZXF1ZW50aWFsKSB7XG4gICAgICBsb2FkTmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmYoZXZlbnRzKTtcbiAgICAgIG9uKGV2ZW50cywgY2hlY2spO1xuICAgICAgY2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcigpIHtcbiAgICBDb21wb25lbnRzMi5TbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIHF1ZXJ5QWxsKFNsaWRlLnNsaWRlLCBJTUFHRV9TRUxFQ1RPUikuZm9yRWFjaChmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBzcmMgPSBnZXRBdHRyaWJ1dGUoaW1nLCBTUkNfREFUQV9BVFRSSUJVVEUpO1xuICAgICAgICB2Y
6625XIgc3Jjc2V0ID0gZ2V0QXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcblxuICAgICAgICBpZiAoc3JjICE9PSBpbWcuc3JjIHx8IHNyY3NldCAhPT0gaW1nLnNyY3NldCkge1xuICAgICAgICAgIHZhciBjbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzZXMuc3Bpbm5lcjtcbiAgICAgICAgICB2YXIgcGFyZW50ID0gaW1nLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgdmFyIHNwaW5uZXIgPSBjaGlsZChwYXJlbnQsIFwiLlwiICsgY2xhc3NOYW1lKSB8fCBjcmVhdGUoXCJzcGFuXCIsIGNsYXNzTmFtZSwgcGFyZW50KTtcbiAgICAgICAgICBlbnRyaWVzLnB1c2goW2ltZywgU2xpZGUsIHNwaW5uZXJdKTtcbiAgICAgICAgICBpbWcuc3JjIHx8IGRpc3BsYXkoaW1nLCBcIm5vbmVcIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2soKSB7XG4gICAgZW50cmllcyA9IGVudHJpZXMuZmlsdGVyKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgZGlzdGFuY2UgPSBvcHRpb25zLnBlclBhZ2UgKiAoKG9wdGlvbnMucHJlbG9hZFBhZ2VzIHx8IDEpICsgMSkgLSAxO1xuICAgICAgcmV0dXJuIGRhdGFbMV0uaXNXaXRoaW4oU3BsaWRlMi5pbmRleCwgZGlzdGFuY2UpID8gbG9hZChkYXRhKSA6IHRydWU7XG4gICAgfSk7XG4gICAgZW50cmllcy5sZW5ndGggfHwgb2ZmKGV2ZW50cyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2FkKGRhdGEpIHtcbiAgICB2YXIgaW1nID0gZGF0YVswXTtcbiAgICBhZGRDbGFzcyhkYXRhWzFdLnNsaWRlLCBDTEFTU19MT0FESU5HKTtcbiAgICBiaW5kKGltZywgXCJsb2FkIGVycm9yXCIsIGFwcGx5KG9uTG9hZCwgZGF0YSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3JjXCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSkpO1xuICAgIHNldEF0dHJpYnV0ZShpbWcsIFwic3Jjc2V0XCIsIGdldEF0dHJpYnV0ZShpbWcsIFNSQ1NFVF9EQVRBX0FUVFJJQlVURSkpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTG9hZChkYXRhLCBlKSB7XG4gICAgdmFyIGltZyA9IGRhdGFbMF0sXG4gICAgICAgIFNsaWRlID0gZGF0YVsxXTtcbiAgICByZW1vdmVDbGFzcyhTbGlkZS5zbGlkZSwgQ0xBU1NfTE9BRElORyk7XG5cbiAgICBpZiAoZS50eXBlICE9PSBcImVycm9yXCIpIHtcbiAgICAgIHJlbW92ZShkYXRhWzJdKTtcbiAgICAgIGRpc3BsYXkoaW1nLCBcIlwiKTtcbiAgICAgIGVtaXQoRVZFTlRfTEFaWUxPQURfTE9BREVELCBpbWcsIFNsaWRlKTtcbiAgICAgIGVtaXQoRVZFTlRfUkVTSVpFKTtcbiAgICB9XG5cbiAgICBpc1NlcXVlbnRpYWwgJiYgbG9hZE5leHQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWROZXh0KCkge1xuICAgIGVudHJpZXMubGVuZ3RoICYmIGxvYWQoZW50cmllcy5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGFwcGx5KGVtcHR5LCBlbnRyaWVzKSxcbiAgICBjaGVjazogY2hlY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gUGFnaW5hdGlvbihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBlbWl0ID0gZXZlbnQuZW1pdCxcbiAgICAgIGJpbmQgPSBldmVudC5iaW5kO1xuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzLFxuICAgICAgRWxlbWVudHMgPSBDb21wb25lbnRzMi5FbGVtZW50cyxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyO1xuICB2YXIgaGFzRm9jdXMgPSBDb250cm9sbGVyLmhhc0ZvY3VzLFxuICAgICAgZ2V0SW5kZXggPSBDb250cm9sbGVyLmdldEluZGV4LFxuICAgICAgZ28gPSBDb250cm9sbGVyLmdvO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgcGxhY2Vob2xkZXIgPSBFbGVtZW50cy5wYWdpbmF0aW9uO1xuICB2YXIgaXRlbXMgPSBbXTtcbiAgdmFyIGxpc3Q7XG4gIHZhciBwYWdpbmF0aW9uQ2xhc3NlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEXSwgbW91bnQpO1xuICAgIHZhciBlbmFibGVkID0gb3B0aW9ucy5wYWdpbmF0aW9uO1xuICAgIHBsYWNlaG9sZGVyICYmIGRpc3BsYXkocGxhY2Vob2xkZXIsIGVuYWJsZWQgPyBcIlwiIDogXCJub25lXCIpO1xuXG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX1NDUk9MTEVEXSwgdXBkYXRlKTtcbiAgICAgIGNyZWF0ZVBhZ2luYXRpb24oKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgZW1pdChFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIHtcbiAgICAgICAgbGlzdDogbGlzdCxcbiAgICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgICB9LCBnZXRBdChTcGxpZGUyLmluZGV4KSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAobGlzdCkge1xuICAgICAgcmVtb3ZlKHBsYWNlaG9sZGVyID8gc2xpY2UobGlzdC5jaGlsZHJlbikgOiBsaXN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzKTtcbiAgICAgIGVtcHR5KGl0ZW1zKTtcbiAgICAgIGxpc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdmFyIGxlbmd0aCA9IFNwbGlkZTIubGVuZ3RoO1xuICAgIHZhciBjbGFzc2VzID0gb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gb3B0aW9ucy5pMThuLFxuICAgICAgICBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgIHZhciBtYXggPSBoYXNGb2N1cygpID8gQ29udHJvbGxlci5nZXRFbmQoKSArIDEgOiBjZWlsKGxlbmd0aCAvIHBlclBhZ2UpO1xuICAgIGxpc3QgPSBwbGFjZWhvbGRlciB8fCBjcmVhdGUoXCJ1bFwiLCBjbGFzc2VzLnBhZ2luYXRpb24sIEVsZW1lbnRzLnRyYWNrLnBhcmVudEVsZW1lbnQpO1xuICAgIGFkZENsYXNzKGxpc3QsIHBhZ2luYXRpb25DbGFzc2VzID0gQ0xBU1NfUEFHSU5BVElPTiArIFwiLS1cIiArIGdldERpcmVjdGlvbigpKTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgUk9MRSwgXCJ0YWJsaXN0XCIpO1xuICAgIHNldEF0dHJpYnV0ZShsaXN0LCBBUklBX0xBQkVMLCBpMThuLnNlbGVjdCk7XG4gICAgc2V0QXR0cmlidXRlKGxpc3QsIEFSSUFfT1JJRU5UQVRJT04sIGdldERpcmVjdGlvbigpID09PSBUVEIgPyBcInZlcnRpY2FsXCIgOiBcIlwiKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4OyBpKyspIHtcbiAgICAgIHZhciBsaSA9IGNyZWF0ZShcImxpXCIsIG51bGwsIGxpc3QpO1xuICAgICAgdmFyIGJ1dHRvbiA9IGNyZWF0ZShcImJ1dHRvblwiLCB7XG4gICAgICAgIGNsYXNzOiBjbGFzc2VzLnBhZ2UsXG4gICAgICAgI
6625HR5cGU6IFwiYnV0dG9uXCJcbiAgICAgIH0sIGxpKTtcbiAgICAgIHZhciBjb250cm9scyA9IFNsaWRlcy5nZXRJbihpKS5tYXAoZnVuY3Rpb24gKFNsaWRlKSB7XG4gICAgICAgIHJldHVybiBTbGlkZS5zbGlkZS5pZDtcbiAgICAgIH0pO1xuICAgICAgdmFyIHRleHQgPSAhaGFzRm9jdXMoKSAmJiBwZXJQYWdlID4gMSA/IGkxOG4ucGFnZVggOiBpMThuLnNsaWRlWDtcbiAgICAgIGJpbmQoYnV0dG9uLCBcImNsaWNrXCIsIGFwcGx5KG9uQ2xpY2ssIGkpKTtcblxuICAgICAgaWYgKG9wdGlvbnMucGFnaW5hdGlvbktleWJvYXJkKSB7XG4gICAgICAgIGJpbmQoYnV0dG9uLCBcImtleWRvd25cIiwgYXBwbHkob25LZXlkb3duLCBpKSk7XG4gICAgICB9XG5cbiAgICAgIHNldEF0dHJpYnV0ZShsaSwgUk9MRSwgXCJwcmVzZW50YXRpb25cIik7XG4gICAgICBzZXRBdHRyaWJ1dGUoYnV0dG9uLCBST0xFLCBcInRhYlwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfQ09OVFJPTFMsIGNvbnRyb2xzLmpvaW4oXCIgXCIpKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIEFSSUFfTEFCRUwsIGZvcm1hdCh0ZXh0LCBpICsgMSkpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgVEFCX0lOREVYLCAtMSk7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgbGk6IGxpLFxuICAgICAgICBidXR0b246IGJ1dHRvbixcbiAgICAgICAgcGFnZTogaVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhwYWdlKSB7XG4gICAgZ28oXCI+XCIgKyBwYWdlLCB0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5ZG93bihwYWdlLCBlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5KGUpO1xuICAgIHZhciBkaXIgPSBnZXREaXJlY3Rpb24oKTtcbiAgICB2YXIgbmV4dFBhZ2UgPSAtMTtcblxuICAgIGlmIChrZXkgPT09IHJlc29sdmUoQVJST1dfUklHSFQsIGZhbHNlLCBkaXIpKSB7XG4gICAgICBuZXh0UGFnZSA9ICsrcGFnZSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19MRUZULCBmYWxzZSwgZGlyKSkge1xuICAgICAgbmV4dFBhZ2UgPSAoLS1wYWdlICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJIb21lXCIpIHtcbiAgICAgIG5leHRQYWdlID0gMDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJFbmRcIikge1xuICAgICAgbmV4dFBhZ2UgPSBsZW5ndGggLSAxO1xuICAgIH1cblxuICAgIHZhciBpdGVtID0gaXRlbXNbbmV4dFBhZ2VdO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGZvY3VzKGl0ZW0uYnV0dG9uKTtcbiAgICAgIGdvKFwiPlwiICsgbmV4dFBhZ2UpO1xuICAgICAgcHJldmVudChlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMucGFnaW5hdGlvbkRpcmVjdGlvbiB8fCBvcHRpb25zLmRpcmVjdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgcmV0dXJuIGl0ZW1zW0NvbnRyb2xsZXIudG9QYWdlKGluZGV4KV07XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgdmFyIHByZXYgPSBnZXRBdChnZXRJbmRleCh0cnVlKSk7XG4gICAgdmFyIGN1cnIgPSBnZXRBdChnZXRJbmRleCgpKTtcblxuICAgIGlmIChwcmV2KSB7XG4gICAgICB2Y
6625XIgYnV0dG9uID0gcHJldi5idXR0b247XG4gICAgICByZW1vdmVDbGFzcyhidXR0b24sIENMQVNTX0FDVElWRSk7XG4gICAgICByZW1vdmVBdHRyaWJ1dGUoYnV0dG9uLCBBUklBX1NFTEVDVEVEKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIFRBQl9JTkRFWCwgLTEpO1xuICAgIH1cblxuICAgIGlmIChjdXJyKSB7XG4gICAgICB2YXIgX2J1dHRvbiA9IGN1cnIuYnV0dG9uO1xuICAgICAgYWRkQ2xhc3MoX2J1dHRvbiwgQ0xBU1NfQUNUSVZFKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBBUklBX1NFTEVDVEVELCB0cnVlKTtcbiAgICAgIHNldEF0dHJpYnV0ZShfYnV0dG9uLCBUQUJfSU5ERVgsIFwiXCIpO1xuICAgIH1cblxuICAgIGVtaXQoRVZFTlRfUEFHSU5BVElPTl9VUERBVEVELCB7XG4gICAgICBsaXN0OiBsaXN0LFxuICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgfSwgcHJldiwgY3Vycik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGl0ZW1zOiBpdGVtcyxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICBnZXRBdDogZ2V0QXQsXG4gICAgdXBkYXRlOiB1cGRhdGVcbiAgfTtcbn1cblxudmFyIFRSSUdHRVJfS0VZUyA9IFtcIiBcIiwgXCJFbnRlclwiXTtcblxuZnVuY3Rpb24gU3luYyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5pc05hdmlnYXRpb24sXG4gICAgICBzbGlkZUZvY3VzID0gb3B0aW9ucy5zbGlkZUZvY3VzO1xuICB2YXIgZXZlbnRzID0gW107XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgU3BsaWRlMi5zcGxpZGVzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgaWYgKCF0YXJnZXQuaXNQYXJlbnQpIHtcbiAgICAgICAgc3luYyhTcGxpZGUyLCB0YXJnZXQuc3BsaWRlKTtcbiAgICAgICAgc3luYyh0YXJnZXQuc3BsaWRlLCBTcGxpZGUyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpc05hdmlnYXRpb24pIHtcbiAgICAgIG5hdmlnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICBlbXB0eShldmVudHMpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3VudCgpIHtcbiAgICBkZXN0cm95KCk7XG4gICAgbW91bnQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN5bmMoc3BsaWRlLCB0YXJnZXQpIHtcbiAgICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShzcGxpZGUpO1xuICAgIGV2ZW50Lm9uKEVWRU5UX01PVkUsIGZ1bmN0aW9uIChpbmRleCwgcHJldiwgZGVzdCkge1xuICAgICAgdGFyZ2V0LmdvKHRhcmdldC5pcyhMT09QKSA/IGRlc3QgOiBpbmRleCk7XG4gICAgfSk7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbmF2aWdhdGUoKSB7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gICAgdmFyIG9uID0gZXZlbnQub247XG4gICAgb24oRVZFTlRfQ0xJQ0ssIG9uQ2xpY2spO1xuICAgIG9uKEVWRU5UX1NMSURFX0tFWURPV04sIG9uS2V5ZG93bik7XG4gICAgb24oW0VWRU5UX01PVU5URUQsIEVWRU5UX1VQREFURURdLCB1cGRhdGUpO1xuICAgIGV2ZW50cy5wdXNoKGV2ZW50KTtcbiAgICBldmVudC5lbWl0KEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCwgU3BsaWRlMi5zcGxpZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBzZXRBdHRyaWJ1dGUoQ29tcG9uZW50czIuRWxlbWVudHMubGlzdCwgQVJJQV9PUklFTlRBVElPTiwgb3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQiA/IFwidmVydGljYWxcIiA6IFwiXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25DbGljayhTbGlkZSkge1xuICAgIFNwbGlkZTIuZ28oU2xpZGUuaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25LZXlkb3duKFNsaWRlLCBlKSB7XG4gICAgaWYgKGluY2x1ZGVzKFRSSUdHRVJfS0VZUywgbm9ybWFsaXplS2V5KGUpKSkge1xuICAgICAgb25DbGljayhTbGlkZSk7XG4gICAgICBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0dXA6IGFwcGx5KENvbXBvbmVudHMyLk1lZGlhLnNldCwge1xuICAgICAgc2xpZGVGb2N1czogaXNVbmRlZmluZWQoc2xpZGVGb2N1cykgPyBpc05hdmlnYXRpb24gOiBzbGlkZUZvY3VzXG4gICAgfSwgdHJ1ZSksXG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgcmVtb3VudDogcmVtb3VudFxuICB9O1xufVxuXG5mdW5jdGlvbiBXaGVlbChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTIgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMi5iaW5kO1xuXG4gIHZhciBsYXN0VGltZSA9IDA7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKG9wdGlvbnMud2hlZWwpIHtcbiAgICAgIGJpbmQoQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2ssIFwid2hlZWxcIiwgb25XaGVlbCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgIGlmIChlLmNhbmNlbGFibG
6625UpIHtcbiAgICAgIHZhciBkZWx0YVkgPSBlLmRlbHRhWTtcbiAgICAgIHZhciBiYWNrd2FyZHMgPSBkZWx0YVkgPCAwO1xuICAgICAgdmFyIHRpbWVTdGFtcCA9IHRpbWVPZihlKTtcblxuICAgICAgdmFyIF9taW4gPSBvcHRpb25zLndoZWVsTWluVGhyZXNob2xkIHx8IDA7XG5cbiAgICAgIHZhciBzbGVlcCA9IG9wdGlvbnMud2hlZWxTbGVlcCB8fCAwO1xuXG4gICAgICBpZiAoYWJzKGRlbHRhWSkgPiBfbWluICYmIHRpbWVTdGFtcCAtIGxhc3RUaW1lID4gc2xlZXApIHtcbiAgICAgICAgU3BsaWRlMi5nbyhiYWNrd2FyZHMgPyBcIjxcIiA6IFwiPlwiKTtcbiAgICAgICAgbGFzdFRpbWUgPSB0aW1lU3RhbXA7XG4gICAgICB9XG5cbiAgICAgIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSAmJiBwcmV2ZW50KGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZFByZXZlbnQoYmFja3dhcmRzKSB7XG4gICAgcmV0dXJuICFvcHRpb25zLnJlbGVhc2VXaGVlbCB8fCBTcGxpZGUyLnN0YXRlLmlzKE1PVklORykgfHwgQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRBZGphY2VudChiYWNrd2FyZHMpICE9PSAtMTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50XG4gIH07XG59XG5cbnZhciBTUl9SRU1PVkFMX0RFTEFZID0gOTA7XG5cbmZ1bmN0aW9uIExpdmUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTEzID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTEzLm9uO1xuXG4gIHZhciB0cmFjayA9IENvbXBvbmVudHMyLkVsZW1lbnRzLnRyYWNrO1xuICB2YXIgZW5hYmxlZCA9IG9wdGlvbnMubGl2ZSAmJiAhb3B0aW9ucy5pc05hdmlnYXRpb247XG4gIHZhciBzciA9IGNyZWF0ZShcInNwYW5cIiwgQ0xBU1NfU1IpO1xuICB2YXIgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoU1JfUkVNT1ZBTF9ERUxBWSwgYXBwbHkodG9nZ2xlLCBmYWxzZSkpO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBkaXNhYmxlKCFDb21wb25lbnRzMi5BdXRvcGxheS5pc1BhdXNlZCgpKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0cmFjaywgQVJJQV9BVE9NSUMsIHRydWUpO1xuICAgICAgc3IudGV4dENvbnRlbnQgPSBcIlxcdTIwMjZcIjtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BMQVksIGFwcGx5KGRpc2FibGUsIHRydWUpKTtcbiAgICAgIG9uKEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBhcHBseShkaXNhYmxlLCBmYWxzZSkpO1xuICAgICAgb24oW0VWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF0sIGFwcGx5KHRvZ2dsZSwgdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvZ2dsZShhY3RpdmUpIHtcbiAgICBzZXRBdHRyaWJ1dGUodHJhY2ssIEFSSUFfQlVTWSwgYWN0aXZlKTtcblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGFwcGVuZCh0cmFjaywgc3IpO1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKHNyKTtcbiAgICAgIGludGVydmFsLmNhbmNlbCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlQXR0cmlidXRlKHRyYWNrLCBbQVJJQV9MSVZFLCBBUklBX0FUT01JQywgQVJJQV9CVVNZXSk7XG4gICAgcmVtb3ZlKHNyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc2FibGUoZGlzYWJsZWQpIHtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgc2V0QXR0cmlidXRlKHRyYWNrLCBBUklBX0xJVkUsIGRpc2FibGVkID8gXCJvZmZcIiA6IFwicG9saXRlXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRpc2FibGU6IGRpc2FibGUsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgQ29tcG9uZW50Q29uc3RydWN0b3JzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIE1lZGlhOiBNZWRpYSxcbiAgRGlyZWN0aW9uOiBEaXJlY3Rpb24sXG4gIEVsZW1lbnRzOiBFbGVtZW50cyxcbiAgU2xpZGVzOiBTbGlkZXMsXG4gIExheW91dDogTGF5b3V0LFxuICBDbG9uZXM6IENsb25lcyxcbiAgTW92ZTogTW92ZSxcbiAgQ29udHJvbGxlcjogQ29udHJvbGxlcixcbiAgQXJyb3dzOiBBcnJvd3MsXG4gIEF1dG9wbGF5OiBBdXRvcGxheSxcbiAgQ292ZXI6IENvdmVyLFxuICBTY3JvbGw6IFNjcm9sbCxcbiAgRHJhZzogRHJhZyxcbiAgS2V5Ym9hcmQ6IEtleWJvYXJkLFxuICBMYXp5TG9hZDogTGF6eUxvYWQsXG4gIFBhZ2luYXRpb246IFBhZ2luYXRpb24sXG4gIFN5bmM6IFN5bmMsXG4gIFdoZWVsOiBXaGVlbCxcbiAgTGl2ZTogTGl2ZVxufSk7XG52YXIgSTE4TiA9IHtcbiAgcHJldjogXCJQcmV2aW91cyBzbGlkZVwiLFxuICBuZXh0OiBcIk5leHQgc2xpZGVcIixcbiAgZmlyc3Q6IFwiR28gdG8gZmlyc3Qgc2xpZGVcIixcbiAgbGFzdDogXCJHbyB0byBsYXN0IHNsaWRlXCIsXG4gIHNsaWRlWDogXCJHbyB0byBzbGlkZSAlc1wiLFxuICBwYWdlWDogXCJHbyB0byBwYWdlICVzXCIsXG4gIHBsYXk6IFwiU3RhcnQgYXV0b3BsYXlcIixcbiAgcGF1c2U6IFwiUGF1c2UgYXV0b3BsYXlcIixcbiAgY2Fyb3VzZWw6IFwiY2Fyb3VzZWxcIixcbiAgc2xpZGU6IFwic2xpZGVcIixcbiAgc2VsZWN0OiBcIlNlbGVjdCBhIHNsaWRlIHRvIHNob3dcIixcbiAgc2xpZGVMYWJlbDogXCIlcyBvZiAlc1wiXG59O1xudmFyIERFRkFVTFRTID0ge1xuICB0eXBlOiBcInNsaWRlXCIsXG4gIHJvbGU6IFwicmVnaW9uXCIsXG4gIHNwZWVkOiA0MDAsXG4gIHBlclBhZ2U6IDEsXG4gIGNsb25lU3RhdHVzOiB0cnVlLFxuICBhcnJvd3M6IHRydWUsXG4gIHBhZ2luYXRpb246IHRydWUsXG4gIHBhZ2luYXRpb25LZXlib2FyZDogdHJ1ZSxcbiAgaW50ZXJ2YWw6IDVlMyxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwYXVzZU9uRm9jdXM6IHRydWUsXG4gIHJlc2V0UHJvZ3Jlc3M6IHRydWUsXG4gIGVhc2luZzogXCJjdWJpYy1iZXppZXIoMC4yNSwgMSwgMC41LCAxKVwiLFxuICBkcmFnOiB0cnVlLFxuICBkaXJlY3Rpb246IFwibHRyXCIsXG4gIHRyaW1TcGFjZTogdHJ1ZSxcbiAgZm9jdXNhYmxlTm9kZXM6IFwiYSwgYnV0dG9uLCB0ZXh0YXJlYSwgaW5wdXQsIHNlbGVjdCwgaWZyYW1lXCIsXG4gIGxpdmU6IHRydWUsXG4gIGNsYXNzZXM6IENMQVNTRVMsXG4gIGkxOG46IEkxOE4sXG4gIHJlZHVjZWRNb3Rpb246IHtcbiAgICBzcGVlZDogMCxcbiAgICByZXdpbmRTcGVlZDogMCxcbiAgICBhdXRvcGxheTogXCJwYXVzZVwiXG4gIH1cbn07XG5cbmZ1bmN0aW9uIEZhZGUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcztcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBFdmVudEludGVyZmFjZShTcGxpZGUyKS5vbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfUkVGUkVTSF0sIGluaXQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICBTbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgIFNsaWRlLnN0eWxlKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlWCgtXCIgKyAxMDAgKiBTbGlkZS5pbmRleCArIFwiJSlcIik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIFNsaWRlcy5zdHlsZShcInRyYW5zaXRpb25cIiwgXCJvcGFjaXR5IFwiICsgb3B0aW9ucy5zcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgbmV4dFRpY2soZG9uZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBub29wXG4gIH07XG59XG5cbmZ1bmN0aW9uIFNsaWRlKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBNb3ZlID0gQ29tcG9uZW50czIuTW92ZSxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyLFxuICAgICAgU2Nyb2xsID0gQ29tcG9uZW50czIuU2Nyb2xsO1xuICB2YXIgbGlzdCA9IENvbXBvbmVudHMyLkVsZW1lbnRzLmxpc3Q7XG4gIHZhciB0cmFuc2l0aW9uID0gYXBwbHkoc3R5bGUsIGxpc3QsIFwidHJhbnNpdGlvblwiKTtcbiAgdmFyIGVuZENhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLmJpbmQobGlzdCwgXCJ0cmFuc2l0aW9uZW5kXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS50YXJnZXQgPT09IGxpc3QgJiYgZW5kQ2FsbGJhY2spIHtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIGVuZENhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChpbmRleCwgZG9uZSkge1xuICAgIHZhciBkZXN0aW5
6625hdGlvbiA9IE1vdmUudG9Qb3NpdGlvbihpbmRleCwgdHJ1ZSk7XG4gICAgdmFyIHBvc2l0aW9uID0gTW92ZS5nZXRQb3NpdGlvbigpO1xuICAgIHZhciBzcGVlZCA9IGdldFNwZWVkKGluZGV4KTtcblxuICAgIGlmIChhYnMoZGVzdGluYXRpb24gLSBwb3NpdGlvbikgPj0gMSAmJiBzcGVlZCA+PSAxKSB7XG4gICAgICBpZiAob3B0aW9ucy51c2VTY3JvbGwpIHtcbiAgICAgICAgU2Nyb2xsLnNjcm9sbChkZXN0aW5hdGlvbiwgc3BlZWQsIGZhbHNlLCBkb25lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zaXRpb24oXCJ0cmFuc2Zvcm0gXCIgKyBzcGVlZCArIFwibXMgXCIgKyBvcHRpb25zLmVhc2luZyk7XG4gICAgICAgIE1vdmUudHJhbnNsYXRlKGRlc3RpbmF0aW9uLCB0cnVlKTtcbiAgICAgICAgZW5kQ2FsbGJhY2sgPSBkb25lO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBNb3ZlLmp1bXAoaW5kZXgpO1xuICAgICAgZG9uZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICB0cmFuc2l0aW9uKFwiXCIpO1xuICAgIFNjcm9sbC5jYW5jZWwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFNwZWVkKGluZGV4KSB7XG4gICAgdmFyIHJld2luZFNwZWVkID0gb3B0aW9ucy5yZXdpbmRTcGVlZDtcblxuICAgIGlmIChTcGxpZGUyLmlzKFNMSURFKSAmJiByZXdpbmRTcGVlZCkge1xuICAgICAgdmFyIHByZXYgPSBDb250cm9sbGVyLmdldEluZGV4KHRydWUpO1xuICAgICAgdmFyIGVuZCA9IENvbnRyb2xsZXIuZ2V0RW5kKCk7XG5cbiAgICAgIGlmIChwcmV2ID09PSAwICYmIGluZGV4ID49IGVuZCB8fCBwcmV2ID49IGVuZCAmJiBpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmV3aW5kU3BlZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMuc3BlZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBzdGFydDogc3RhcnQsXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn1cblxudmFyIF9TcGxpZGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBfU3BsaWRlKHRhcmdldCwgb3B0aW9ucykge1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZSgpO1xuICAgIHRoaXMuQ29tcG9uZW50cyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZShDUkVBVEVEKTtcbiAgICB0aGlzLnNwbGlkZXMgPSBbXTtcbiAgICB0aGlzLl9vID0ge307XG4gICAgdGhpcy5fRSA9IHt9O1xuICAgIHZhciByb290ID0gaXNTdHJpbmcodGFyZ2V0KSA/IHF1ZXJ5KGRvY3VtZW50LCB0YXJnZXQpIDogdGFyZ2V0O1xuICAgIGFzc2VydChyb290LCByb290ICsgXCIgaXMgaW52YWxpZC5cIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICBvcHRpb25zID0gbWVyZ2Uoe1xuICAgICAgbGFiZWw6IGdldEF0dHJpYnV0ZShyb290LCBBUklBX0xBQkVMKSB8fCBcIlwiLFxuICAgICAgbGFiZWxsZWRieTogZ2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUxMRURCWSkgfHwgXCJcIlxuICAgIH0sIERFRkFVTFRTLCBfU3BsaWRlLmRlZmF1bHRzLCBvcHRpb25zIHx8IHt9KTtcblxuICAgIHRyeSB7XG4gICAgICBtZXJnZShvcHRpb25zLCBKU09OLnBhcnNlKGdldEF0dHJpYnV0ZShyb290LCBEQVRBX0FUVFJJQlVURSkpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsIFwiSW52YWxpZCBKU09OXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX28gPSBPYmplY3QuY3JlYXRlKG1lcmdlKHt9LCBvcHRpb25zKSk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gX1NwbGlkZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLm1vdW50ID0gZnVuY3Rpb24gbW91bnQoRXh0ZW5zaW9ucywgVHJhbnNpdGlvbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBDb21wb25lbnRzMiA9IHRoaXMuQ29tcG9uZW50cztcbiAgICBhc3NlcnQoc3RhdGUuaXMoW0NSRUFURUQsIERFU1RST1lFRF0pLCBcIkFscmVhZHkgbW91bnRlZCFcIik7XG4gICAgc3RhdGUuc2V0KENSRUFURUQpO1xuICAgIHRoaXMuX0MgPSBDb21wb25lbnRzMjtcbiAgICB0aGlzLl9UID0gVHJhbnNpdGlvbiB8fCB0aGlzLl9UIHx8ICh0aGlzLmlzKEZBREUpID8gRmFkZSA6IFNsaWRlKTtcbiAgICB0aGlzLl9FID0gRXh0ZW5zaW9ucyB8fCB0aGlzLl9FO1xuICAgIHZhciBDb25zdHJ1Y3RvcnMgPSBhc3NpZ24oe30sIENvbXBvbmVudENvbnN0cnVjdG9ycywgdGhpcy5fRSwge1xuICAgICAgVHJhbnNpdGlvbjogdGhpcy5fVFxuICAgIH0pO1xuICAgIGZvck93bihDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uIChDb21wb25lbnQsIGtleSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IENvbXBvbmVudChfdGhpcywgQ29tcG9uZW50czIsIF90aGlzLl9vKTtcbiAgICAgIENvbXBvbmVudHMyW2tleV0gPSBjb21wb25lbnQ7XG4gICAgICBjb21wb25lbnQuc2V0dXAgJiYgY29tcG9uZW50LnNldHVwKCk7XG4gICAgfSk7XG4gICAgZm9yT3duKENvbXBvbmVudHMyLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICBjb21wb25lbnQubW91bnQgJiYgY29tcG9uZW50Lm1vdW50KCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KEVWRU5UX01PVU5URUQpO1xuICAgIGFkZENsYXNzKHRoaXMucm9vdCwgQ0xBU1NfSU5JVElBTElaRUQpO1xuICAgIHN0YXRlLnNldChJRExFKTtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVBRFkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5zeW5jID0gZnVuY3Rpb24gc3luYyhzcGxpZGUpIHtcbiAgICB0aGlzLnNwbGlkZXMucHVzaCh7XG4gICAgICBzcGxpZGU6IHNwbGlkZVxuICAgIH0pO1xuICAgIHNwbGlkZS5zcGxpZGVzLnB1c2goe1xuICAgICAgc3BsaWRlOiB0aGlzLFxuICAgICAgaXNQYXJlbnQ6IHRydWVcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmlzKElETEUpKSB7XG4gICAgICB0aGlzLl9DLlN5bmMucmVtb3VudCgpO1xuXG4gICAgICBzcGxpZGUuQ29tcG9uZW50cy5TeW5jLnJlbW91bnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uZ28gPSBmdW5jdGlvbiBnbyhjb250cm9sKSB7XG4gICAgdGhpcy5fQy5Db250cm9sbGVyLmdvKGNvbnRyb2wpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9uID0gZnVuY3Rpb24gb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZXZlbnQub24oZXZlbnRzLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLm9mZiA9IGZ1bmN0aW9uIG9mZihldmVudHMpIHtcbiAgICB0aGlzLmV2ZW50Lm9mZihldmVudHMpO1xuICAgIHJldHVybi
6625B0aGlzO1xuICB9O1xuXG4gIF9wcm90by5lbWl0ID0gZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIHZhciBfdGhpcyRldmVudDtcblxuICAgIChfdGhpcyRldmVudCA9IHRoaXMuZXZlbnQpLmVtaXQuYXBwbHkoX3RoaXMkZXZlbnQsIFtldmVudF0uY29uY2F0KHNsaWNlKGFyZ3VtZW50cywgMSkpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5hZGQgPSBmdW5jdGlvbiBhZGQoc2xpZGVzLCBpbmRleCkge1xuICAgIHRoaXMuX0MuU2xpZGVzLmFkZChzbGlkZXMsIGluZGV4KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5yZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUobWF0Y2hlcikge1xuICAgIHRoaXMuX0MuU2xpZGVzLnJlbW92ZShtYXRjaGVyKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5pcyA9IGZ1bmN0aW9uIGlzKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5fby50eXBlID09PSB0eXBlO1xuICB9O1xuXG4gIF9wcm90by5yZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICB0aGlzLmVtaXQoRVZFTlRfUkVGUkVTSCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmRlc3Ryb3kgPSBmdW5jdGlvbiBkZXN0cm95KGNvbXBsZXRlbHkpIHtcbiAgICBpZiAoY29tcGxldGVseSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wbGV0ZWx5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgZXZlbnQgPSB0aGlzLmV2ZW50LFxuICAgICAgICBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAoc3RhdGUuaXMoQ1JFQVRFRCkpIHtcbiAgICAgIEV2ZW50SW50ZXJmYWNlKHRoaXMpLm9uKEVWRU5UX1JFQURZLCB0aGlzLmRlc3Ryb3kuYmluZCh0aGlzLCBjb21wbGV0ZWx5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvck93bih0aGlzLl9DLCBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbXBvbmVudC5kZXN0cm95ICYmIGNvbXBvbmVudC5kZXN0cm95KGNvbXBsZXRlbHkpO1xuICAgICAgfSwgdHJ1ZSk7XG4gICAgICBldmVudC5lbWl0KEVWRU5UX0RFU1RST1kpO1xuICAgICAgZXZlbnQuZGVzdHJveSgpO1xuICAgICAgY29tcGxldGVseSAmJiBlbXB0eSh0aGlzLnNwbGlkZXMpO1xuICAgICAgc3RhdGUuc2V0KERFU1RST1lFRCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX2NyZWF0ZUNsYXNzKF9TcGxpZGUsIFt7XG4gICAga2V5OiBcIm9wdGlvbnNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQob3B0aW9ucykge1xuICAgICAgdGhpcy5fQy5NZWRpYS5zZXQob3B0aW9ucywgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxlbmd0aFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX0MuU2xpZGVzLmdldExlbmd0aCh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5kZXhcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9DLkNvbnRyb2xsZXIuZ2V0SW5kZXgoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gX1NwbGlkZTtcbn0oKTtcblxudmFyIFNwbGlkZSA9IF9TcGxpZGU7XG5TcGxpZGUuZGVmYXVsdHMgPSB7fTtcblNwbGlkZS5TVEFURVMgPSBTVEFURVM7XG52YXIgQ0xBU1NfUkVOREVSRUQgPSBcImlzLXJlbmRlcmVkXCI7XG52YXIgUkVOREVSRVJfREVGQVVMVF9DT05GSUcgPSB7XG4gIGxpc3RUYWc6IFwidWxcIixcbiAgc2xpZGVUYWc6IFwibGlcIlxufTtcblxudmFyIFN0eWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3R5bGUoaWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnN0eWxlcyA9IHt9O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgdmFyIF9wcm90bzIgPSBTdHlsZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5ydWxlID0gZnVuY3Rpb24gcnVsZShzZWxlY3RvciwgcHJvcCwgdmFsdWUsIGJyZWFrcG9pbnQpIHtcbiAgICBicmVha3BvaW50ID0gYnJlYWtwb2ludCB8fCBcImRlZmF1bHRcIjtcbiAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5zdHlsZXNbYnJlYWtwb2ludF0gPSB0aGlzLnN0eWxlc1ticmVha3BvaW50XSB8fCB7fTtcbiAgICB2YXIgc3R5bGVzID0gc2VsZWN0b3JzW3NlbGVjdG9yXSA9IHNlbGVjdG9yc1tzZWxlY3Rvcl0gfHwge307XG4gICAgc3R5bGVzW3Byb3BdID0gdmFsdWU7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZCA9IGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5zdHlsZXMuZGVmYXVsdCkge1xuICAgICAgY3NzICs9IHRoaXMuYnVpbGRTZWxlY3RvcnModGhpcy5zdHlsZXMuZGVmYXVsdCk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXModGhpcy5zdHlsZXMpLnNvcnQoZnVuY3Rpb24gKG4sIG0pIHtcbiAgICAgIHJldHVybiBfdGhpczIub3B0aW9ucy5tZWRpYVF1ZXJ5ID09PSBcIm1pblwiID8gK24gLSArbSA6ICttIC0gK247XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoYnJlYWtwb2ludCkge1xuICAgICAgaWYgKGJyZWFrcG9pbnQgIT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgIGNzcyArPSBcIkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IFwiICsgYnJlYWtwb2ludCArIFwicHgpIHtcIjtcbiAgICAgICAgY3NzICs9IF90aGlzMi5idWlsZFNlbGVjdG9ycyhfdGhpczIuc3R5bGVzW2JyZWFrcG9pbnRdKTtcbiAgICAgICAgY3NzICs9IFwifVwiO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjc3M7XG4gIH07XG5cbiAgX3Byb3RvMi5idWlsZFNlbGVjdG9ycyA9IGZ1bmN0aW9uIGJ1aWxkU2VsZWN0b3JzKHNlbGVjdG9ycykge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGNzcyA9IFwiXCI7XG4gICAgZm9yT3duKHNlbGVjdG9ycywgZnVuY3Rpb24gKHN0eWxlcywgc2VsZWN0b3IpIHtcbiAgICAgIHNlbGVjdG9yID0gKFwiI1wiICsgX3RoaXMzLmlkICsgXCIgXCIgKyBzZWxlY3RvcikudHJpbSgpO1xuICAgICAgY3NzICs9IHNlbGVjdG9yICsgXCIge1wiO1xuICAgICAgZm9yT3duKHN0eWxlcywgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7XG4gICAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIGNzcyArPSBwcm9wICsgXCI6IFwiICsgdmFsdWUgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjc3MgKz0gXCJ9XCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzcztcbiAgfTtcblxuICByZXR1cm4gU3R5bGU7XG59KCk7XG5cbnZhciBTcGxpZGVSZW5kZXJlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNwbGlkZVJlbmRlcmVyKGNvbnRlbn
6625RzLCBvcHRpb25zLCBjb25maWcsIGRlZmF1bHRzKSB7XG4gICAgdGhpcy5zbGlkZXMgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmJyZWFrcG9pbnRzID0gW107XG4gICAgbWVyZ2UoREVGQVVMVFMsIGRlZmF1bHRzIHx8IHt9KTtcbiAgICBtZXJnZShtZXJnZSh0aGlzLm9wdGlvbnMsIERFRkFVTFRTKSwgb3B0aW9ucyB8fCB7fSk7XG4gICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgIHRoaXMuY29uZmlnID0gYXNzaWduKHt9LCBSRU5ERVJFUl9ERUZBVUxUX0NPTkZJRywgY29uZmlnIHx8IHt9KTtcbiAgICB0aGlzLmlkID0gdGhpcy5jb25maWcuaWQgfHwgdW5pcXVlSWQoXCJzcGxpZGVcIik7XG4gICAgdGhpcy5TdHlsZSA9IG5ldyBTdHlsZSh0aGlzLmlkLCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuRGlyZWN0aW9uID0gRGlyZWN0aW9uKG51bGwsIG51bGwsIHRoaXMub3B0aW9ucyk7XG4gICAgYXNzZXJ0KHRoaXMuY29udGVudHMubGVuZ3RoLCBcIlByb3ZpZGUgYXQgbGVhc3QgMSBjb250ZW50LlwiKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIFNwbGlkZVJlbmRlcmVyLmNsZWFuID0gZnVuY3Rpb24gY2xlYW4oc3BsaWRlKSB7XG4gICAgdmFyIF9FdmVudEludGVyZmFjZTE0ID0gRXZlbnRJbnRlcmZhY2Uoc3BsaWRlKSxcbiAgICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UxNC5vbjtcblxuICAgIHZhciByb290ID0gc3BsaWRlLnJvb3Q7XG4gICAgdmFyIGNsb25lcyA9IHF1ZXJ5QWxsKHJvb3QsIFwiLlwiICsgQ0xBU1NfQ0xPTkUpO1xuICAgIG9uKEVWRU5UX01PVU5URUQsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZShjaGlsZChyb290LCBcInN0eWxlXCIpKTtcbiAgICB9KTtcbiAgICByZW1vdmUoY2xvbmVzKTtcbiAgfTtcblxuICB2YXIgX3Byb3RvMyA9IFNwbGlkZVJlbmRlcmVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8zLmluaXQgPSBmdW5jdGlvbiBpbml0KCkge1xuICAgIHRoaXMucGFyc2VCcmVha3BvaW50cygpO1xuICAgIHRoaXMuaW5pdFNsaWRlcygpO1xuICAgIHRoaXMucmVnaXN0ZXJSb290U3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclRyYWNrU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclNsaWRlU3R5bGVzKCk7XG4gICAgdGhpcy5yZWdpc3Rlckxpc3RTdHlsZXMoKTtcbiAgfTtcblxuICBfcHJvdG8zLmluaXRTbGlkZXMgPSBmdW5jdGlvbiBpbml0U2xpZGVzKCkge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgcHVzaCh0aGlzLnNsaWRlcywgdGhpcy5jb250ZW50cy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQsIGluZGV4KSB7XG4gICAgICBjb250ZW50ID0gaXNTdHJpbmcoY29udGVudCkgPyB7XG4gICAgICAgIGh0bWw6IGNvbnRlbnRcbiAgICAgIH0gOiBjb250ZW50O1xuICAgICAgY29udGVudC5zdHlsZXMgPSBjb250ZW50LnN0eWxlcyB8fCB7fTtcbiAgICAgIGNvbnRlbnQuYXR0cnMgPSBjb250ZW50LmF0dHJzIHx8IHt9O1xuXG4gICAgICBfdGhpczQuY292ZXIoY29udGVudCk7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gX3RoaXM0Lm9wdGlvbnMuY2xhc3Nlcy5zbGlkZSArIFwiIFwiICsgKGluZGV4ID09PSAwID8gQ0xBU1NfQUNUSVZF
6625IDogXCJcIik7XG4gICAgICBhc3NpZ24oY29udGVudC5hdHRycywge1xuICAgICAgICBjbGFzczogKGNsYXNzZXMgKyBcIiBcIiArIChjb250ZW50LmF0dHJzLmNsYXNzIHx8IFwiXCIpKS50cmltKCksXG4gICAgICAgIHN0eWxlOiBfdGhpczQuYnVpbGRTdHlsZXMoY29udGVudC5zdHlsZXMpXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pKTtcblxuICAgIGlmICh0aGlzLmlzTG9vcCgpKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlQ2xvbmVzKHRoaXMuc2xpZGVzKTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclJvb3RTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclJvb3RTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmMlswXSxcbiAgICAgICAgICBvcHRpb25zID0gX3JlZjJbMV07XG5cbiAgICAgIF90aGlzNS5TdHlsZS5ydWxlKFwiIFwiLCBcIm1heC13aWR0aFwiLCB1bml0KG9wdGlvbnMud2lkdGgpLCB3aWR0aCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclRyYWNrU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJUcmFja1N0eWxlcygpIHtcbiAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgIHZhciBTdHlsZTIgPSB0aGlzLlN0eWxlO1xuICAgIHZhciBzZWxlY3RvciA9IFwiLlwiICsgQ0xBU1NfVFJBQ0s7XG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjNbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IF9yZWYzWzFdO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ0xlZnRcIiksIF90aGlzNi5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIF90aGlzNi5yZXNvbHZlKFwicGFkZGluZ1JpZ2h0XCIpLCBfdGhpczYuY3NzUGFkZGluZyhvcHRpb25zLCB0cnVlKSwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiaGVpZ2h0XCIsIF90aGlzNi5jc3NUcmFja0hlaWdodChvcHRpb25zKSwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJMaXN0U3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJMaXN0U3R5bGVzKCkge1xuICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgdmFyIFN0eWxlMiA9IHRoaXMuU3R5bGU7XG4gICAgdmFyIHNlbGVjdG9yID0gXCIuXCIgKyBDTEFTU19MSVNUO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjQpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY0WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNFsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcInRyYW5zZm9ybVwiLCBfdGhpczcuYnVpbGRUcmFuc2xhdGUob3B0aW9ucyksIHdpZHRoKTtcblxuICAgICAgaWYgKCFfdGhpczcuY3NzU2xpZGVIZWlnaHQob3B0aW9ucykpIHtcbiAgICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwiYXNwZWN0LXJhdGlvXCIsIF90aGlzNy5jc3NBc3BlY3RSYXRpbyhvcHRpb25zKSwgd2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMucmVnaXN0ZXJTbGlkZVN0eWxlcyA9IGZ1bmN0aW9uIHJlZ2lzdGVyU2xpZGVTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICB2YXIgU3R5bGUyID0gdGhpcy5TdHlsZTtcbiAgICB2YXIgc2VsZWN0b3IgPSBcIi5cIiArIENMQVNTX1NMSURFO1xuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjUpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWY1WzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmNVsxXTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcIndpZHRoXCIsIF90aGlzOC5jc3NTbGlkZVdpZHRoKG9wdGlvbnMpLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgXCJoZWlnaHRcIiwgX3RoaXM4LmNzc1NsaWRlSGVpZ2h0KG9wdGlvbnMpIHx8IFwiMTAwJVwiLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgX3RoaXM4LnJlc29sdmUoXCJtYXJnaW5SaWdodFwiKSwgdW5pdChvcHRpb25zLmdhcCkgfHwgXCIwcHhcIiwgd2lkdGgpO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IgKyBcIiA+IGltZ1wiLCBcImRpc3BsYXlcIiwgb3B0aW9ucy5jb3ZlciA/IFwibm9uZVwiIDogXCJpbmxpbmVcIiwgd2lkdGgpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRUcmFuc2xhdGUgPSBmdW5jdGlvbiBidWlsZFRyYW5zbGF0ZShvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzJERpcmVjdGlvbiA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbi5vcmllbnQ7XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhbHVlcy5wdXNoKHRoaXMuY3NzT2Zmc2V0Q2xvbmVzKG9wdGlvbnMpKTtcbiAgICB2YWx1ZXMucHVzaCh0aGlzLmNzc09mZnNldEdhcHMob3B0aW9ucykpO1xuXG4gICAgaWYgKHRoaXMuaXNDZW50ZXIob3B0aW9ucykpIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQoLTUwKSwgXCIlXCIpKTtcbiAgICAgIHZhbHVlcy5wdXNoLmFwcGx5KHZhbHVlcywgdGhpcy5jc3NPZmZzZXRDZW50ZXIob3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKEJvb2xlYW4pLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBcInRyYW5zbGF0ZVwiICsgcmVzb2x2ZShcIlhcIikgKyBcIihcIiArIHZhbHVlICsgXCIpXCI7XG4gICAgfSkuam9pbihcIiBcIik7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NPZmZzZXRDbG9uZXMgPSBmdW5jdGlvbiBjc3NPZmZzZXRDbG9uZXMob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyREaXJlY3Rpb24yID0gdGh
6625pcy5EaXJlY3Rpb24sXG4gICAgICAgIHJlc29sdmUgPSBfdGhpcyREaXJlY3Rpb24yLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbjIub3JpZW50O1xuICAgIHZhciBjbG9uZUNvdW50ID0gdGhpcy5nZXRDbG9uZUNvdW50KCk7XG5cbiAgICBpZiAodGhpcy5pc0ZpeGVkV2lkdGgob3B0aW9ucykpIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUudmFsdWUsXG4gICAgICAgICAgdW5pdDIgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlLnVuaXQ7XG5cbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlKSAqIGNsb25lQ291bnQsIHVuaXQyKTtcbiAgICB9XG5cbiAgICB2YXIgcGVyY2VudCA9IDEwMCAqIGNsb25lQ291bnQgLyBvcHRpb25zLnBlclBhZ2U7XG4gICAgcmV0dXJuIG9yaWVudChwZXJjZW50KSArIFwiJVwiO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzT2Zmc2V0Q2VudGVyID0gZnVuY3Rpb24gY3NzT2Zmc2V0Q2VudGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMkRGlyZWN0aW9uMyA9IHRoaXMuRGlyZWN0aW9uLFxuICAgICAgICByZXNvbHZlID0gX3RoaXMkRGlyZWN0aW9uMy5yZXNvbHZlLFxuICAgICAgICBvcmllbnQgPSBfdGhpcyREaXJlY3Rpb24zLm9yaWVudDtcblxuICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWUyID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUyLnZhbHVlLFxuICAgICAgICAgIHVuaXQyID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTIudW5pdDtcblxuICAgICAgcmV0dXJuIFt0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlIC8gMiksIHVuaXQyKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlLFxuICAgICAgICBnYXAgPSBvcHRpb25zLmdhcDtcbiAgICB2YWx1ZXMucHVzaChvcmllbnQoNTAgLyBwZXJQYWdlKSArIFwiJVwiKTtcblxuICAgIGlmIChnYXApIHtcbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlMyA9IHRoaXMucGFyc2VDc3NWYWx1ZShnYXApLFxuICAgICAgICAgIF92YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWUzLnZhbHVlLFxuICAgICAgICAgIF91bml0ID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTMudW5pdDtcblxuICAgICAgdmFyIGdhcE9mZnNldCA9IChfdmFsdWUgLyBwZXJQYWdlIC0gX3ZhbHVlKSAvIDI7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcE9mZnNldCksIF91bml0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfTtcblxuICBfcHJvdG8zLmNzc09mZnNldEdhcHMgPSBmdW5jdGlvbiBjc3NPZmZzZXRHYXBzKG9wdGlvbnMpIHtcbiAgICB2YXIgY2xvbmVDb3VudCA9IHRoaXMuZ2V0Q2xvbmVDb3VudCgpO1xuXG4gICAgaWYgKGNsb25lQ291bnQgJiYgb3B0aW9ucy5nYXApIHtcbiAgICAgIHZhciBvcmllbnQgPSB0aGlzLkRpcmVjdGlvbi5vcmllbnQ7XG5cbiAgICAgIHZhciBfdGhpcyRwYXJzZUNzc1ZhbHVlNCA9IHRoaXMucGFyc2VDc3NWYWx1ZShvcHRpb25zLmdhcCksXG4gICAgICAgICAgdmFsdWUgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlNC52YWx1ZSxcbiAgICAgICAgICB1bml0MiA9IF90aGlzJHBhcnNlQ3NzVmFsdWU0LnVuaXQ7XG5cbiAgICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZENzc1ZhbHVlKG9yaWVudCh2YWx1ZSAqIGNsb25lQ291bnQpLCB1bml0Mik7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gb3B0aW9ucy5wZXJQYWdlO1xuICAgICAgdmFyIGdhcHMgPSBjbG9uZUNvdW50IC8gcGVyUGFnZTtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KGdhcHMgKiB2YWx1ZSksIHVuaXQyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICBfcHJvdG8zLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHByb3ApIHtcbiAgICByZXR1cm4gY2FtZWxUb0tlYmFiKHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocHJvcCkpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzUGFkZGluZyA9IGZ1bmN0aW9uIGNzc1BhZGRpbmcob3B0aW9ucywgcmlnaHQpIHtcbiAgICB2YXIgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZztcbiAgICB2YXIgcHJvcCA9IHRoaXMuRGlyZWN0aW9uLnJlc29sdmUocmlnaHQgPyBcInJpZ2h0XCIgOiBcImxlZnRcIiwgdHJ1ZSk7XG4gICAgcmV0dXJuIHBhZGRpbmcgJiYgdW5pdChwYWRkaW5nW3Byb3BdIHx8IChpc09iamVjdChwYWRkaW5nKSA/IDAgOiBwYWRkaW5nKSkgfHwgXCIwcHhcIjtcbiAgfTtcblxuICBfcHJvdG8zLmNzc1RyYWNrSGVpZ2h0ID0gZnVuY3Rpb24gY3NzVHJhY2tIZWlnaHQob3B0aW9ucykge1xuICAgIHZhciBoZWlnaHQgPSBcIlwiO1xuXG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbCgpKSB7XG4gICAgICBoZWlnaHQgPSB0aGlzLmNzc0hlaWdodChvcHRpb25zKTtcbiAgICAgIGFzc2VydChoZWlnaHQsICdcImhlaWdodFwiIGlzIG1pc3NpbmcuJyk7XG4gICAgICBoZWlnaHQgPSBcImNhbGMoXCIgKyBoZWlnaHQgKyBcIiAtIFwiICsgdGhpcy5jc3NQYWRkaW5nKG9wdGlvbnMsIGZhbHNlKSArIFwiIC0gXCIgKyB0aGlzLmNzc1BhZGRpbmcob3B0aW9ucywgdHJ1ZSkgKyBcIilcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xuICB9O1xuXG4gIF9wcm90bzMuY3NzSGVpZ2h0ID0gZnVuY3Rpb24gY3NzSGVpZ2h0KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdW5pdChvcHRpb25zLmhlaWdodCk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NTbGlkZVdpZHRoID0gZnVuY3Rpb24gY3NzU2xpZGVXaWR0aChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuYXV0b1dpZHRoID8gXCJcIiA6IHVuaXQob3B0aW9ucy5maXhlZFdpZHRoKSB8fCAodGhpcy5pc1ZlcnRpY2FsKCkgPyBcIlwiIDogdGhpcy5jc3NTbGlkZVNpemUob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVIZWlnaHQgPSBmdW5jdGlvbiBjc3NTbGlkZUhlaWdodChvcHRpb25zKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5maXhlZEhlaWdodCkgfHwgKHRoaXMuaXNWZXJ0aWNhbCgpID8gb3B0aW9ucy5hdXRv
6625SGVpZ2h0ID8gXCJcIiA6IHRoaXMuY3NzU2xpZGVTaXplKG9wdGlvbnMpIDogdGhpcy5jc3NIZWlnaHQob3B0aW9ucykpO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzU2xpZGVTaXplID0gZnVuY3Rpb24gY3NzU2xpZGVTaXplKG9wdGlvbnMpIHtcbiAgICB2YXIgZ2FwID0gdW5pdChvcHRpb25zLmdhcCk7XG4gICAgcmV0dXJuIFwiY2FsYygoMTAwJVwiICsgKGdhcCAmJiBcIiArIFwiICsgZ2FwKSArIFwiKS9cIiArIChvcHRpb25zLnBlclBhZ2UgfHwgMSkgKyAoZ2FwICYmIFwiIC0gXCIgKyBnYXApICsgXCIpXCI7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NBc3BlY3RSYXRpbyA9IGZ1bmN0aW9uIGNzc0FzcGVjdFJhdGlvKG9wdGlvbnMpIHtcbiAgICB2YXIgaGVpZ2h0UmF0aW8gPSBvcHRpb25zLmhlaWdodFJhdGlvO1xuICAgIHJldHVybiBoZWlnaHRSYXRpbyA/IFwiXCIgKyAxIC8gaGVpZ2h0UmF0aW8gOiBcIlwiO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRDc3NWYWx1ZSA9IGZ1bmN0aW9uIGJ1aWxkQ3NzVmFsdWUodmFsdWUsIHVuaXQyKSB7XG4gICAgcmV0dXJuIFwiXCIgKyB2YWx1ZSArIHVuaXQyO1xuICB9O1xuXG4gIF9wcm90bzMucGFyc2VDc3NWYWx1ZSA9IGZ1bmN0aW9uIHBhcnNlQ3NzVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YXIgbnVtYmVyID0gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICAgIHZhciB1bml0MiA9IHZhbHVlLnJlcGxhY2UoL1xcZCooXFwuXFxkKik/LywgXCJcIikgfHwgXCJweFwiO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IG51bWJlcixcbiAgICAgICAgdW5pdDogdW5pdDJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHVuaXQ6IFwicHhcIlxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvMy5wYXJzZUJyZWFrcG9pbnRzID0gZnVuY3Rpb24gcGFyc2VCcmVha3BvaW50cygpIHtcbiAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMub3B0aW9ucy5icmVha3BvaW50cztcbiAgICB0aGlzLmJyZWFrcG9pbnRzLnB1c2goW1wiZGVmYXVsdFwiLCB0aGlzLm9wdGlvbnNdKTtcblxuICAgIGlmIChicmVha3BvaW50cykge1xuICAgICAgZm9yT3duKGJyZWFrcG9pbnRzLCBmdW5jdGlvbiAob3B0aW9ucywgd2lkdGgpIHtcbiAgICAgICAgX3RoaXM5LmJyZWFrcG9pbnRzLnB1c2goW3dpZHRoLCBtZXJnZShtZXJnZSh7fSwgX3RoaXM5Lm9wdGlvbnMpLCBvcHRpb25zKV0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90bzMuaXNGaXhlZFdpZHRoID0gZnVuY3Rpb24gaXNGaXhlZFdpZHRoKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gISFvcHRpb25zW3RoaXMuRGlyZWN0aW9uLnJlc29sdmUoXCJmaXhlZFdpZHRoXCIpXTtcbiAgfTtcblxuICBfcHJvdG8zLmlzTG9vcCA9IGZ1bmN0aW9uIGlzTG9vcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnR5cGUgPT09IExPT1A7XG4gIH07XG5cbiAgX3Byb3RvMy5pc0NlbnRlciA9IGZ1bmN0aW9uIGlzQ2VudGVyKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mb2N1cyA9PT0gXCJjZW50ZXJcIikge1xuICAgICAgaWYgKHRoaXMuaXNMb29wKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudHlwZSA9PT0gU0xJREUpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm9wdGlvbnMudHJpbVNwYWNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBfcHJvdG8zLmlzVmVydGljYWwgPSBmdW5jdGlvbiBpc1ZlcnRpY2FsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBUVEI7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZENsYXNzZXMgPSBmdW5jdGlvbiBidWlsZENsYXNzZXMoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgcmV0dXJuIFtDTEFTU19ST09ULCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy50eXBlLCBDTEFTU19ST09UICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24sIG9wdGlvbnMuZHJhZyAmJiBDTEFTU19ST09UICsgXCItLWRyYWdnYWJsZVwiLCBvcHRpb25zLmlzTmF2aWdhdGlvbiAmJiBDTEFTU19ST09UICsgXCItLW5hdlwiLCBDTEFTU19BQ1RJVkUsICF0aGlzLmNvbmZpZy5oaWRkZW4gJiYgQ0xBU1NfUkVOREVSRURdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmJ1aWxkQXR0cnMgPSBmdW5jdGlvbiBidWlsZEF0dHJzKGF0dHJzKSB7XG4gICAgdmFyIGF0dHIgPSBcIlwiO1xuICAgIGZvck93bihhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIGF0dHIgKz0gdmFsdWUgPyBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI9XFxcIlwiICsgdmFsdWUgKyBcIlxcXCJcIiA6IFwiXCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIGF0dHIudHJpbSgpO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRTdHlsZXMgPSBmdW5jdGlvbiBidWlsZFN0eWxlcyhzdHlsZXMpIHtcbiAgICB2YXIgc3R5bGUgPSBcIlwiO1xuICAgIGZvck93bihzdHlsZXMsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBzdHlsZSArPSBcIiBcIiArIGNhbWVsVG9LZWJhYihrZXkpICsgXCI6XCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZS50cmltKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZW5kZXJTbGlkZXMgPSBmdW5jdGlvbiByZW5kZXJTbGlkZXMoKSB7XG4gICAgdmFyIF90aGlzMTAgPSB0aGlzO1xuXG4gICAgdmFyIHRhZyA9IHRoaXMuY29uZmlnLnNsaWRlVGFnO1xuICAgIHJldHVybiB0aGlzLnNsaWRlcy5tYXAoZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBcIjxcIiArIHRhZyArIFwiIFwiICsgX3RoaXMxMC5idWlsZEF0dHJzKGNvbnRlbnQuYXR0cnMpICsgXCI+XCIgKyAoY29udGVudC5odG1sIHx8IFwiXCIpICsgXCI8L1wiICsgdGFnICsgXCI+XCI7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmNvdmVyID0gZnVuY3Rpb24gY292ZXIoY29udGVudCkge1xuICAgIHZhciBzdHlsZXMgPSBjb250ZW50LnN0eWxlcyxcbiAgICAgICAgX2NvbnRlbnQkaHRtbCA9IGNvbnRlbnQuaHRtbCxcbiAgICAgICAgaH
6625RtbCA9IF9jb250ZW50JGh0bWwgPT09IHZvaWQgMCA/IFwiXCIgOiBfY29udGVudCRodG1sO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb3ZlciAmJiAhdGhpcy5vcHRpb25zLmxhenlMb2FkKSB7XG4gICAgICB2YXIgc3JjID0gaHRtbC5tYXRjaCgvPGltZy4qP3NyY1xccyo9XFxzKihbJ1wiXSkoLis/KVxcMS4qPz4vKTtcblxuICAgICAgaWYgKHNyYyAmJiBzcmNbMl0pIHtcbiAgICAgICAgc3R5bGVzLmJhY2tncm91bmQgPSBcImNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKCdcIiArIHNyY1syXSArIFwiJylcIjtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5nZW5lcmF0ZUNsb25lcyA9IGZ1bmN0aW9uIGdlbmVyYXRlQ2xvbmVzKGNvbnRlbnRzKSB7XG4gICAgdmFyIGNsYXNzZXMgPSB0aGlzLm9wdGlvbnMuY2xhc3NlcztcbiAgICB2YXIgY291bnQgPSB0aGlzLmdldENsb25lQ291bnQoKTtcbiAgICB2YXIgc2xpZGVzID0gY29udGVudHMuc2xpY2UoKTtcblxuICAgIHdoaWxlIChzbGlkZXMubGVuZ3RoIDwgY291bnQpIHtcbiAgICAgIHB1c2goc2xpZGVzLCBzbGlkZXMpO1xuICAgIH1cblxuICAgIHB1c2goc2xpZGVzLnNsaWNlKC1jb3VudCkucmV2ZXJzZSgpLCBzbGlkZXMuc2xpY2UoMCwgY291bnQpKS5mb3JFYWNoKGZ1bmN0aW9uIChjb250ZW50LCBpbmRleCkge1xuICAgICAgdmFyIGF0dHJzID0gYXNzaWduKHt9LCBjb250ZW50LmF0dHJzLCB7XG4gICAgICAgIGNsYXNzOiBjb250ZW50LmF0dHJzLmNsYXNzICsgXCIgXCIgKyBjbGFzc2VzLmNsb25lXG4gICAgICB9KTtcbiAgICAgIHZhciBjbG9uZSA9IGFzc2lnbih7fSwgY29udGVudCwge1xuICAgICAgICBhdHRyczogYXR0cnNcbiAgICAgIH0pO1xuICAgICAgaW5kZXggPCBjb3VudCA/IGNvbnRlbnRzLnVuc2hpZnQoY2xvbmUpIDogY29udGVudHMucHVzaChjbG9uZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5nZXRDbG9uZUNvdW50ID0gZnVuY3Rpb24gZ2V0Q2xvbmVDb3VudCgpIHtcbiAgICBpZiAodGhpcy5pc0xvb3AoKSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zLmNsb25lcykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jbG9uZXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBwZXJQYWdlID0gbWF4LmFwcGx5KHZvaWQgMCwgdGhpcy5icmVha3BvaW50cy5tYXAoZnVuY3Rpb24gKF9yZWY2KSB7XG4gICAgICAgIHZhciBvcHRpb25zMiA9IF9yZWY2WzFdO1xuICAgICAgICByZXR1cm4gb3B0aW9uczIucGVyUGFnZTtcbiAgICAgIH0pKTtcbiAgICAgIHJldHVybiBwZXJQYWdlICogKChvcHRpb25zLmZsaWNrTWF4UGFnZXMgfHwgMSkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93cyA9IGZ1bmN0aW9uIHJlbmRlckFycm93cygpIHtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcIlwiICsgdGhpcy5vcHRpb25zLmNsYXNzZXMuYXJyb3dzICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gdGhpcy5yZW5kZXJBcnJvdyh0cnVlKTtcbiAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3coZmFsc2UpO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlckFycm93ID0gZnVuY3Rpb24gcmVuZGVyQXJyb3cocHJldikge1xuICAgIHZhciBfdGhpcyRvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICBjbGFzc2VzID0gX3RoaXMkb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgICBpMThuID0gX3RoaXMkb3B0aW9ucy5pMThuO1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgIGNsYXNzOiBjbGFzc2VzLmFycm93ICsgXCIgXCIgKyAocHJldiA/IGNsYXNzZXMucHJldiA6IGNsYXNzZXMubmV4dCksXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgYXJpYUxhYmVsOiBwcmV2ID8gaTE4bi5wcmV2IDogaTE4bi5uZXh0XG4gICAgfTtcbiAgICByZXR1cm4gXCI8YnV0dG9uIFwiICsgdGhpcy5idWlsZEF0dHJzKGF0dHJzKSArIFwiPjxzdmcgeG1sbnM9XFxcIlwiICsgWE1MX05BTUVfU1BBQ0UgKyBcIlxcXCIgdmlld0JveD1cXFwiMCAwIFwiICsgU0laRSArIFwiIFwiICsgU0laRSArIFwiXFxcIiB3aWR0aD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyBTSVpFICsgXCJcXFwiPjxwYXRoIGQ9XFxcIlwiICsgKHRoaXMub3B0aW9ucy5hcnJvd1BhdGggfHwgUEFUSCkgKyBcIlxcXCIgLz48L3N2Zz48L2J1dHRvbj5cIjtcbiAgfTtcblxuICBfcHJvdG8zLmh0bWwgPSBmdW5jdGlvbiBodG1sKCkge1xuICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgcm9vdENsYXNzID0gX3RoaXMkY29uZmlnLnJvb3RDbGFzcyxcbiAgICAgICAgbGlzdFRhZyA9IF90aGlzJGNvbmZpZy5saXN0VGFnLFxuICAgICAgICBhcnJvd3MgPSBfdGhpcyRjb25maWcuYXJyb3dzLFxuICAgICAgICBiZWZvcmVUcmFjayA9IF90aGlzJGNvbmZpZy5iZWZvcmVUcmFjayxcbiAgICAgICAgYWZ0ZXJUcmFjayA9IF90aGlzJGNvbmZpZy5hZnRlclRyYWNrLFxuICAgICAgICBzbGlkZXIgPSBfdGhpcyRjb25maWcuc2xpZGVyLFxuICAgICAgICBiZWZvcmVTbGlkZXIgPSBfdGhpcyRjb25maWcuYmVmb3JlU2xpZGVyLFxuICAgICAgICBhZnRlclNsaWRlciA9IF90aGlzJGNvbmZpZy5hZnRlclNsaWRlcjtcbiAgICB2YXIgaHRtbCA9IFwiXCI7XG4gICAgaHRtbCArPSBcIjxkaXYgaWQ9XFxcIlwiICsgdGhpcy5pZCArIFwiXFxcIiBjbGFzcz1cXFwiXCIgKyB0aGlzLmJ1aWxkQ2xhc3NlcygpICsgXCIgXCIgKyAocm9vdENsYXNzIHx8IFwiXCIpICsgXCJcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8c3R5bGU+XCIgKyB0aGlzLlN0eWxlLmJ1aWxkKCkgKyBcIjwvc3R5bGU+XCI7XG5cbiAgICBpZiAoc2xpZGVyKSB7XG4gICAgICBodG1sICs9IGJlZm9yZVNsaWRlciB8fCBcIlwiO1xuICAgICAgaH
6625RtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fc2xpZGVyXFxcIj5cIjtcbiAgICB9XG5cbiAgICBodG1sICs9IGJlZm9yZVRyYWNrIHx8IFwiXCI7XG5cbiAgICBpZiAoYXJyb3dzKSB7XG4gICAgICBodG1sICs9IHRoaXMucmVuZGVyQXJyb3dzKCk7XG4gICAgfVxuXG4gICAgaHRtbCArPSBcIjxkaXYgY2xhc3M9XFxcInNwbGlkZV9fdHJhY2tcXFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8XCIgKyBsaXN0VGFnICsgXCIgY2xhc3M9XFxcInNwbGlkZV9fbGlzdFxcXCI+XCI7XG4gICAgaHRtbCArPSB0aGlzLnJlbmRlclNsaWRlcygpO1xuICAgIGh0bWwgKz0gXCI8L1wiICsgbGlzdFRhZyArIFwiPlwiO1xuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICBodG1sICs9IGFmdGVyVHJhY2sgfHwgXCJcIjtcblxuICAgIGlmIChzbGlkZXIpIHtcbiAgICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICAgIGh0bWwgKz0gYWZ0ZXJTbGlkZXIgfHwgXCJcIjtcbiAgICB9XG5cbiAgICBodG1sICs9IFwiPC9kaXY+XCI7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgcmV0dXJuIFNwbGlkZVJlbmRlcmVyO1xufSgpO1xuXG5leHBvcnQgeyBDTEFTU0VTLCBDTEFTU19BQ1RJVkUsIENMQVNTX0FSUk9XLCBDTEFTU19BUlJPV1MsIENMQVNTX0FSUk9XX05FWFQsIENMQVNTX0FSUk9XX1BSRVYsIENMQVNTX0NMT05FLCBDTEFTU19DT05UQUlORVIsIENMQVNTX0ZPQ1VTX0lOLCBDTEFTU19JTklUSUFMSVpFRCwgQ0xBU1NfTElTVCwgQ0xBU1NfTE9BRElORywgQ0xBU1NfTkVYVCwgQ0xBU1NfT1ZFUkZMT1csIENMQVNTX1BBR0lOQVRJT04sIENMQVNTX1BBR0lOQVRJT05fUEFHRSwgQ0xBU1NfUFJFViwgQ0xBU1NfUFJPR1JFU1MsIENMQVNTX1BST0dSRVNTX0JBUiwgQ0xBU1NfUk9PVCwgQ0xBU1NfU0xJREUsIENMQVNTX1NQSU5ORVIsIENMQVNTX1NSLCBDTEFTU19UT0dHTEUsIENMQVNTX1RPR0dMRV9QQVVTRSwgQ0xBU1NfVE9HR0xFX1BMQVksIENMQVNTX1RSQUNLLCBDTEFTU19WSVNJQkxFLCBERUZBVUxUUywgRVZFTlRfQUNUSVZFLCBFVkVOVF9BUlJPV1NfTU9VTlRFRCwgRVZFTlRfQVJST1dTX1VQREFURUQsIEVWRU5UX0FVVE9QTEFZX1BBVVNFLCBFVkVOVF9BVVRPUExBWV9QTEFZLCBFVkVOVF9BVVRPUExBWV9QTEFZSU5HLCBFVkVOVF9DTElDSywgRVZFTlRfREVTVFJPWSwgRVZFTlRfRFJBRywgRVZFTlRfRFJBR0dFRCwgRVZFTlRfRFJBR0dJTkcsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VELCBFVkVOVF9ISURERU4sIEVWRU5UX0lOQUNUSVZFLCBFVkVOVF9MQVpZTE9BRF9MT0FERUQsIEVWRU5UX01PVU5URUQsIEVWRU5UX01PVkUsIEVWRU5UX01PVkVELCBFVkVOVF9OQVZJR0FUSU9OX01PVU5URUQsIEVWRU5UX09WRVJGTE9XLCBFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQsIEVWRU5UX1BBR0lOQVRJT05fVVBEQVRFRCwgRVZFTlRfUkVBRFksIEVWRU5UX1JFRlJFU0gsIEVWRU5UX1JFU0laRSwgRVZFTlRfUkVTSVpFRCwgRVZFTlRfU0NST0xMLCBFVkVOVF9TQ1JPTExFRCwgRVZFTlRfU0hJRlRFRCwgRVZFTlRfU0xJREVfS0VZRE9XTiwgRVZFTlRfVVBEQVRFRCwgRVZFTlRfVklTSUJMRSwgRXZlbnRCaW5kZXIsIEV2ZW50SW50ZXJmYWNlLCBGQURFLCBMT09QLCBMVFIsIFJUTCwgUmVxdWVzdEludGVydmFsLCBTTElERSwgU1RBVFVTX0NMQVNTRVMsIFNwbGlkZSwgU3BsaWRlUmVuZGVyZXIsIFN0YXRlLCBUVEIsIFRocm90dGxlLCBTcGxpZGUgYXMgZGVmYXVsdCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDE0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDUgMjUiXSwic291cmNlUm9vdCI6IiJ9 6626//# sourceURL=webpack-internal:///142 6627`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Video; }); 6628/*! 6629 * Splide.js 6630 * Version : 0.8.0 6631 * License : MIT 6632 * Copyright: 2022 Naotoshi Fujita 6633 */ 6634function empty(array) { 6635 array.length = 0; 6636} 6637 6638function slice$1(arrayLike, start, end) { 6639 return Array.prototype.slice.call(arrayLike, start, end); 6640} 6641 6642function apply$1(func) { 6643 return func.bind.apply(func, [null].concat(slice$1(arguments, 1))); 6644} 6645 6646function typeOf$1(type, subject) { 6647 return typeof subject === type; 6648} 6649 6650var isArray$1 = Array.isArray; 6651apply$1(typeOf$1, "function"); 6652apply$1(typeOf$1, "string");
vendor: 8,477 bytes, lines 6653-7014
6653apply$1(typeOf$1, "undefined"); 6654 6655function toArray$1(value) { 6656 return isArray$1(value) ? value : [value]; 6657} 6658 6659function forEach$1(values, iteratee) { 6660 toArray$1(values).forEach(iteratee); 6661} 6662 6663function includes(array, value) { 6664 return array.indexOf(value) > -1; 6665} 6666 6667var ownKeys$1 = Object.keys; 6668 6669function forOwn$1(object, iteratee, right) { 6670 if (object) { 6671 var keys = ownKeys$1(object); 6672 keys = right ? keys.reverse() : keys; 6673 6674 for (var i = 0; i < keys.length; i++) { 6675 var key = keys[i]; 6676 6677 if (key !== "__proto__") { 6678 if (iteratee(object[key], key) === false) { 6679 break; 6680 } 6681 } 6682 } 6683 } 6684 6685 return object; 6686} 6687 6688function assign$1(object) { 6689 slice$1(arguments, 1).forEach(function (source) { 6690 forOwn$1(source, function (value, key) { 6691 object[key] = source[key]; 6692 }); 6693 }); 6694 return object; 6695} 6696 6697var PROJECT_CODE$1 = "splide"; 6698 6699function EventBinder() { 6700 var listeners = []; 6701 6702 function bind(targets, events, callback, options) { 6703 forEachEvent(targets, events, function (target, event, namespace) { 6704 var isEventTarget = ("addEventListener" in target); 6705 var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); 6706 isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); 6707 listeners.push([target, event, namespace, callback, remover]); 6708 }); 6709 } 6710 6711 function unbind(targets, events, callback) { 6712 forEachEvent(targets, events, function (target, event, namespace) { 6713 listeners = listeners.filter(function (listener) { 6714 if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { 6715 listener[4](); 6716 return false; 6717 } 6718 6719 return true; 6720 }); 6721 }); 6722 } 6723 6724 function dispatch(target, type, detail) { 6725 var e; 6726 var bubbles = true; 6727 6728 if (typeof CustomEvent === "function") { 6729 e = new CustomEvent(type, { 6730 bubbles: bubbles, 6731 detail: detail 6732 }); 6733 } else { 6734 e = document.createEvent("CustomEvent"); 6735 e.initCustomEvent(type, bubbles, false, detail); 6736 } 6737 6738 target.dispatchEvent(e); 6739 return e; 6740 } 6741 6742 function forEachEvent(targets, events, iteratee) { 6743 forEach$1(targets, function (target) { 6744 target && forEach$1(events, function (events2) { 6745 events2.split(" ").forEach(function (eventNS) { 6746 var fragment = eventNS.split("."); 6747 iteratee(target, fragment[0], fragment[1]); 6748 }); 6749 }); 6750 }); 6751 } 6752 6753 function destroy() { 6754 listeners.forEach(function (data) { 6755 data[4](); 6756 }); 6757 empty(listeners); 6758 } 6759 6760 return { 6761 bind: bind, 6762 unbind: unbind, 6763 dispatch: dispatch, 6764 destroy: destroy 6765 }; 6766} 6767 6768var EVENT_MOUNTED = "mounted"; 6769var EVENT_MOVE = "move"; 6770var EVENT_MOVED = "moved"; 6771var EVENT_DRAG = "drag"; 6772var EVENT_DRAGGING = "dragging"; 6773var EVENT_SCROLL = "scroll"; 6774var EVENT_SCROLLED = "scrolled"; 6775var EVENT_DESTROY = "destroy"; 6776 6777function EventInterface(Splide2) { 6778 var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); 6779 var binder = EventBinder(); 6780 6781 function on(events, callback) { 6782 binder.bind(bus, toArray$1(events).join(" "), function (e) { 6783 callback.apply(callback, isArray$1(e.detail) ? e.detail : []); 6784 }); 6785 } 6786 6787 function emit(event) { 6788 binder.dispatch(bus, event, slice$1(arguments, 1)); 6789 } 6790 6791 if (Splide2) { 6792 Splide2.event.on(EVENT_DESTROY, binder.destroy); 6793 } 6794 6795 return assign$1(binder, { 6796 bus: bus, 6797 on: on, 6798 off: apply$1(binder.unbind, bus), 6799 emit: emit 6800 }); 6801} 6802 6803function State(initialState) { 6804 var state = initialState; 6805 6806 function set(value) { 6807 state = value; 6808 } 6809 6810 function is(states) { 6811 return includes(toArray$1(states), state); 6812 } 6813 6814 return { 6815 set: set, 6816 is: is 6817 }; 6818} 6819var CLASS_SLIDE = PROJECT_CODE$1 + "__slide"; 6820var CLASS_CONTAINER = CLASS_SLIDE + "__container"; 6821 6822function slice(arrayLike, start, end) { 6823 return Array.prototype.slice.call(arrayLike, start, end); 6824} 6825 6826function find(arrayLike, predicate) { 6827 return slice(arrayLike).filter(predicate)[0]; 6828} 6829 6830function apply(func) { 6831 return func.bind(null, ...slice(arguments, 1)); 6832} 6833 6834function typeOf(type, subject) { 6835 return typeof subject === type; 6836} 6837function isObject(subject) { 6838 return !isNull(subject) && typeOf("object", subject); 6839} 6840const isArray = Array.isArray; 6841const isFunction = apply(typeOf, "function"); 6842const isString = apply(typeOf, "string"); 6843const isUndefined = apply(typeOf, "undefined"); 6844function isNull(subject) { 6845 return subject === null; 6846} 6847function isHTMLElement(subject) { 6848 return subject instanceof HTMLElement; 6849} 6850 6851function toArray(value) { 6852 return isArray(value) ? value : [value]; 6853} 6854 6855function forEach(values, iteratee) { 6856 toArray(values).forEach(iteratee); 6857} 6858 6859function toggleClass(elm, classes, add) { 6860 if (elm) { 6861 forEach(classes, (name) => { 6862 if (name) { 6863 elm.classList[add ? "add" : "remove"](name); 6864 } 6865 }); 6866 } 6867} 6868 6869function addClass(elm, classes) { 6870 toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); 6871} 6872 6873function append(parent, children) { 6874 forEach(children, parent.appendChild.bind(parent)); 6875} 6876 6877function matches(elm, selector) { 6878 return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); 6879} 6880 6881function children(parent, selector) { 6882 const children2 = parent ? slice(parent.children) : []; 6883 return selector ? children2.filter((child) => matches(child, selector)) : children2; 6884} 6885 6886function child(parent, selector) { 6887 return selector ? children(parent, selector)[0] : parent.firstElementChild; 6888} 6889 6890const ownKeys = Object.keys; 6891 6892function forOwn(object, iteratee, right) { 6893 if (object) { 6894 let keys = ownKeys(object); 6895 keys = right ? keys.reverse() : keys; 6896 for (let i = 0; i < keys.length; i++) { 6897 const key = keys[i]; 6898 if (key !== "__proto__") { 6899 if (iteratee(object[key], key) === false) { 6900 break; 6901 } 6902 } 6903 } 6904 } 6905 return object; 6906} 6907 6908function assign(object) { 6909 slice(arguments, 1).forEach((source) => { 6910 forOwn(source, (value, key) => { 6911 object[key] = source[key]; 6912 }); 6913 }); 6914 return object; 6915} 6916 6917function merge(object) { 6918 slice(arguments, 1).forEach((source) => { 6919 forOwn(source, (value, key) => { 6920 if (isArray(value)) { 6921 object[key] = value.slice(); 6922 } else if (isObject(value)) { 6923 object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value); 6924 } else { 6925 object[key] = value; 6926 } 6927 }); 6928 }); 6929 return object; 6930} 6931 6932function removeAttribute(elms, attrs) { 6933 forEach(elms, (elm) => { 6934 forEach(attrs, (attr) => { 6935 elm && elm.removeAttribute(attr); 6936 }); 6937 }); 6938} 6939 6940function setAttribute(elms, attrs, value) { 6941 if (isObject(attrs)) { 6942 forOwn(attrs, (value2, name) => { 6943 setAttribute(elms, name, value2); 6944 }); 6945 } else { 6946 forEach(elms, (elm) => { 6947 isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); 6948 }); 6949 } 6950} 6951 6952function create(tag, attrs, parent) { 6953 const elm = document.createElement(tag); 6954 if (attrs) { 6955 isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); 6956 } 6957 parent && append(parent, elm); 6958 return elm; 6959} 6960 6961function style(elm, prop, value) { 6962 if (isUndefined(value)) { 6963 return getComputedStyle(elm)[prop]; 6964 } 6965 if (!isNull(value)) { 6966 elm.style[prop] = \`\${value}\`; 6967 } 6968} 6969 6970function display(elm, display2) { 6971 style(elm, "display", display2); 6972} 6973 6974function getAttribute(elm, attr) { 6975 return elm.getAttribute(attr); 6976} 6977 6978function hasClass(elm, className) { 6979 return elm && elm.classList.contains(className); 6980} 6981 6982function remove(nodes) { 6983 forEach(nodes, (node) => { 6984 if (node && node.parentNode) { 6985 node.parentNode.removeChild(node); 6986 } 6987 }); 6988} 6989 6990function queryAll(parent, selector) { 6991 return selector ? slice(parent.querySelectorAll(selector)) : []; 6992} 6993 6994function removeClass(elm, classes) { 6995 toggleClass(elm, classes, false); 6996} 6997 6998const PROJECT_CODE = "splide"; 6999 7000function error(message) { 7001 console.error(\`[\${PROJECT_CODE}] \${message}\`); 7002} 7003 7004const { min, max, floor, ceil, abs } = Math; 7005 7006function clamp(number, x, y) { 7007 const minimum = min(x, y); 7008 const maximum = max(x, y); 7009 return min(max(minimum, number), maximum); 7010} 7011 7012const CLASS_VIDEO = "splide__video"; 7013const CLASS_VIDEO_WRAPPER = \`\${CLASS_VIDEO}__wrapper\`; 7014const CLASS_VIDEO_PLAY_BUTTON = \`\${CLASS_VIDEO}__play\
vendor: 5,461 bytes, lines 7014-7225
7014`; 7015const CLASS_PLAYING = "is-playing"; 7016const CLASS_ERROR = "is-error"; 7017const CLASS_VIDEO_DISABLED = "is-video-disabled"; 7018const MODIFIER_HAS_VIDEO = "--has-video"; 7019 7020const YOUTUBE_DATA_ATTRIBUTE = "data-splide-youtube"; 7021const VIMEO_DATA_ATTRIBUTE = "data-splide-vimeo"; 7022const HTML_VIDEO__DATA_ATTRIBUTE = "data-splide-html-video"; 7023 7024const DEFAULTS = { 7025 hideControls: false, 7026 loop: false, 7027 mute: false, 7028 volume: 0.2 7029}; 7030 7031const EVENT_VIDEO_PLAY = "video:play"; 7032const EVENT_VIDEO_PAUSE = "video:pause"; 7033const EVENT_VIDEO_ENDED = "video:ended"; 7034const EVENT_VIDEO_ERROR = "video:error"; 7035const EVENT_VIDEO_CLICK = "video:click"; 7036 7037const NOT_INITIALIZED = 1; 7038const INITIALIZING = 2; 7039const INITIALIZED = 3; 7040const PENDING_PLAY = 4; 7041const IDLE = 5; 7042const LOADING = 6; 7043const PLAY_REQUEST_ABORTED = 7; 7044const PLAYING = 8; 7045const ERROR = 9; 7046 7047class AbstractVideoPlayer { 7048 constructor(target, videoId, options) { 7049 this.state = State(NOT_INITIALIZED); 7050 this.event = EventInterface(); 7051 this.target = target; 7052 this.videoId = videoId; 7053 this.options = options || {}; 7054 this.onPlay = this.onPlay.bind(this); 7055 this.onPause = this.onPause.bind(this); 7056 this.onEnded = this.onEnded.bind(this); 7057 this.onPlayerReady = this.onPlayerReady.bind(this); 7058 this.onError = this.onError.bind(this); 7059 } 7060 on(events, callback) { 7061 this.event.on(events, callback); 7062 } 7063 play() { 7064 const { state } = this; 7065 if (state.is(ERROR)) { 7066 error("Can not play this video."); 7067 return; 7068 } 7069 this.event.emit("play"); 7070 if (state.is(INITIALIZING)) { 7071 return state.set(PENDING_PLAY); 7072 } 7073 if (state.is(INITIALIZED)) { 7074 this.player = this.createPlayer(this.videoId); 7075 return state.set(PENDING_PLAY); 7076 } 7077 if (state.is([PENDING_PLAY, PLAYING])) { 7078 return; 7079 } 7080 if (state.is(IDLE)) { 7081 state.set(LOADING); 7082 this.playVideo(); 7083 } 7084 } 7085 pause() { 7086 const { state } = this; 7087 if (state.is(ERROR)) { 7088 return; 7089 } 7090 this.event.emit("pause"); 7091 if (state.is(PENDING_PLAY)) { 7092 return state.set(INITIALIZING); 7093 } 7094 if (state.is(LOADING)) { 7095 return state.set(PLAY_REQUEST_ABORTED); 7096 } 7097 if (state.is(PLAYING)) { 7098 this.pauseVideo(); 7099 this.state.set(IDLE); 7100 } 7101 } 7102 isPaused() { 7103 return !this.state.is(PLAYING); 7104 } 7105 destroy() { 7106 this.event.destroy(); 7107 } 7108 onPlayerReady() { 7109 const { state } = this; 7110 const isPending = state.is(PENDING_PLAY); 7111 state.set(IDLE); 7112 if (isPending) { 7113 this.play(); 7114 } 7115 } 7116 onPlay() { 7117 const { state } = this; 7118 const aborted = state.is(PLAY_REQUEST_ABORTED); 7119 state.set(PLAYING); 7120 if (aborted) { 7121 this.pause(); 7122 } else { 7123 this.event.emit("played"); 7124 } 7125 } 7126 onPause() { 7127 this.state.set(IDLE); 7128 this.event.emit("paused"); 7129 } 7130 onEnded() { 7131 this.state.set(IDLE); 7132 this.event.emit("ended"); 7133 } 7134 onError() { 7135 this.state.set(ERROR); 7136 this.event.emit("error"); 7137 } 7138} 7139 7140class HTMLVideoPlayer extends AbstractVideoPlayer { 7141 constructor(target, videoId, options = {}) { 7142 super(target, videoId, options); 7143 this.state.set(INITIALIZED); 7144 } 7145 createPlayer(videoId) { 7146 const { options, options: { playerOptions = {} } } = this; 7147 const player = create("video", { src: videoId }, this.target); 7148 const on = player.addEventListener.bind(player); 7149 assign(player, { 7150 controls: !options.hideControls, 7151 loop: options.loop, 7152 volume: clamp(options.volume, 0, 1), 7153 muted: options.mute 7154 }, playerOptions.htmlVideo || {}); 7155 on("play", this.onPlay); 7156 on("pause", this.onPause); 7157 on("ended", this.onEnded); 7158 on("loadeddata", this.onPlayerReady); 7159 on("error", this.onError); 7160 return player; 7161 } 7162 playVideo() { 7163 const promise = this.player.play(); 7164 promise && promise.catch(this.onError.bind(this)); 7165 } 7166 pauseVideo() { 7167 this.player.pause(); 7168 } 7169 onError() { 7170 if (this.state.is(PLAY_REQUEST_ABORTED)) { 7171 this.state.set(IDLE); 7172 } else { 7173 super.onError(); 7174 } 7175 } 7176 destroy() { 7177 super.destroy(); 7178 const { player } = this; 7179 const off = player.addEventListener.bind(player); 7180 off("play", this.onPlay); 7181 off("pause", this.onPause); 7182 off("ended", this.onEnded); 7183 off("loadeddata", this.onPlayerReady); 7184 } 7185} 7186 7187/*! @vimeo/player v2.17.1 | (c) 2022 Vimeo | MIT License | https://github.com/vimeo/player.js */ 7188function _classCallCheck(instance, Constructor) { 7189 if (!(instance instanceof Constructor)) { 7190 throw new TypeError("Cannot call a class as a function"); 7191 } 7192} 7193 7194function _defineProperties(target, props) { 7195 for (var i = 0; i < props.length; i++) { 7196 var descriptor = props[i]; 7197 descriptor.enumerable = descriptor.enumerable || false; 7198 descriptor.configurable = true; 7199 if ("value" in descriptor) descriptor.writable = true; 7200 Object.defineProperty(target, descriptor.key, descriptor); 7201 } 7202} 7203 7204function _createClass(Constructor, protoProps, staticProps) { 7205 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 7206 if (staticProps) _defineProperties(Constructor, staticProps); 7207 return Constructor; 7208} 7209 7210/** 7211 * @module lib/functions 7212 */ 7213 7214/** 7215 * Check to see this is a node environment. 7216 * @type {Boolean} 7217 */ 7218 7219/* global global */ 7220var isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]'; 7221/** 7222 * Get the name of the method for a given getter or setter. 7223 * 7224 * @param {string} prop The name of the property. 7225 * @param {string} type Either
vendor: 4,191 bytes, lines 7225-7371
7225\u201Cget\u201D or \u201Cset\u201D. 7226 * @return {string} 7227 */ 7228 7229function getMethodName(prop, type) { 7230 if (prop.indexOf(type.toLowerCase()) === 0) { 7231 return prop; 7232 } 7233 7234 return "".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1)); 7235} 7236/** 7237 * Check to see if the object is a DOM Element. 7238 * 7239 * @param {*} element The object to check. 7240 * @return {boolean} 7241 */ 7242 7243function isDomElement(element) { 7244 return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView); 7245} 7246/** 7247 * Check to see whether the value is a number. 7248 * 7249 * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html 7250 * @param {*} value The value to check. 7251 * @param {boolean} integer Check if the value is an integer. 7252 * @return {boolean} 7253 */ 7254 7255function isInteger(value) { 7256 // eslint-disable-next-line eqeqeq 7257 return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value; 7258} 7259/** 7260 * Check to see if the URL is a Vimeo url. 7261 * 7262 * @param {string} url The url string. 7263 * @return {boolean} 7264 */ 7265 7266function isVimeoUrl(url) { 7267 return /^(https?:)?\\/\\/((player|www)\\.)?vimeo\\.com(?=$|\\/)/.test(url); 7268} 7269/** 7270 * Check to see if the URL is for a Vimeo embed. 7271 * 7272 * @param {string} url The url string. 7273 * @return {boolean} 7274 */ 7275 7276function isVimeoEmbed(url) { 7277 var expr = /^https:\\/\\/player\\.vimeo\\.com\\/video\\/\\d+/; 7278 return expr.test(url); 7279} 7280/** 7281 * Get the Vimeo URL from an element. 7282 * The element must have either a data-vimeo-id or data-vimeo-url attribute. 7283 * 7284 * @param {object} oEmbedParameters The oEmbed parameters. 7285 * @return {string} 7286 */ 7287 7288function getVimeoUrl() { 7289 var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7290 var id = oEmbedParameters.id; 7291 var url = oEmbedParameters.url; 7292 var idOrUrl = id || url; 7293 7294 if (!idOrUrl) { 7295 throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.'); 7296 } 7297 7298 if (isInteger(idOrUrl)) { 7299 return "https://vimeo.com/".concat(idOrUrl); 7300 } 7301 7302 if (isVimeoUrl(idOrUrl)) { 7303 return idOrUrl.replace('http:', 'https:'); 7304 } 7305 7306 if (id) { 7307 throw new TypeError("\\u201C".concat(id, "\\u201D is not a valid video id.")); 7308 } 7309 7310 throw new TypeError("\\u201C".concat(idOrUrl, "\\u201D is not a vimeo.com url.")); 7311} 7312 7313var arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined'; 7314var postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined'; 7315 7316if (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) { 7317 throw new Error('Sorry, the Vimeo Player API is not available in this browser.'); 7318} 7319 7320var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 7321 7322function createCommonjsModule(fn, module) { 7323 return module = { exports: {} }, fn(module, module.exports), module.exports; 7324} 7325 7326/*! 7327 * weakmap-polyfill v2.0.4 - ECMAScript6 WeakMap polyfill 7328 * https://github.com/polygonplanet/weakmap-polyfill 7329 * Copyright (c) 2015-2021 polygonplanet <[email protected]> 7330 * @license MIT 7331 */ 7332(function (self) { 7333 7334 if (self.WeakMap) { 7335 return; 7336 } 7337 7338 var hasOwnProperty = Object.prototype.hasOwnProperty; 7339 7340 var hasDefine = Object.defineProperty && function () { 7341 try { 7342 // Avoid IE8's broken Object.defineProperty 7343 return Object.defineProperty({}, 'x', { 7344 value: 1 7345 }).x === 1; 7346 } catch (e) {} 7347 }(); 7348 7349 var defineProperty = function (object, name, value) { 7350 if (hasDefine) { 7351 Object.defineProperty(object, name, { 7352 configurable: true, 7353 writable: true, 7354 value: value 7355 }); 7356 } else { 7357 object[name] = value; 7358 } 7359 }; 7360 7361 self.WeakMap = function () { 7362 // ECMA-262 23.3 WeakMap Objects 7363 function WeakMap() { 7364 if (this === void 0) { 7365 throw new TypeError("Constructor WeakMap requires 'new'"); 7366 } 7367 7368 defineProperty(this, '_id', genId('_WeakMap')); // ECMA-262 23.3.1.1 WeakMap([iterable]) 7369 7370 if (arguments.length > 0) { 7371 // Currently, WeakMap \`iterable\
vendor: 4,800 bytes, lines 7371-7568
7371` argument is not supported 7372 throw new TypeError('WeakMap iterable is not supported'); 7373 } 7374 } // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key) 7375 7376 7377 defineProperty(WeakMap.prototype, 'delete', function (key) { 7378 checkInstance(this, 'delete'); 7379 7380 if (!isObject(key)) { 7381 return false; 7382 } 7383 7384 var entry = key[this._id]; 7385 7386 if (entry && entry[0] === key) { 7387 delete key[this._id]; 7388 return true; 7389 } 7390 7391 return false; 7392 }); // ECMA-262 23.3.3.3 WeakMap.prototype.get(key) 7393 7394 defineProperty(WeakMap.prototype, 'get', function (key) { 7395 checkInstance(this, 'get'); 7396 7397 if (!isObject(key)) { 7398 return void 0; 7399 } 7400 7401 var entry = key[this._id]; 7402 7403 if (entry && entry[0] === key) { 7404 return entry[1]; 7405 } 7406 7407 return void 0; 7408 }); // ECMA-262 23.3.3.4 WeakMap.prototype.has(key) 7409 7410 defineProperty(WeakMap.prototype, 'has', function (key) { 7411 checkInstance(this, 'has'); 7412 7413 if (!isObject(key)) { 7414 return false; 7415 } 7416 7417 var entry = key[this._id]; 7418 7419 if (entry && entry[0] === key) { 7420 return true; 7421 } 7422 7423 return false; 7424 }); // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value) 7425 7426 defineProperty(WeakMap.prototype, 'set', function (key, value) { 7427 checkInstance(this, 'set'); 7428 7429 if (!isObject(key)) { 7430 throw new TypeError('Invalid value used as weak map key'); 7431 } 7432 7433 var entry = key[this._id]; 7434 7435 if (entry && entry[0] === key) { 7436 entry[1] = value; 7437 return this; 7438 } 7439 7440 defineProperty(key, this._id, [key, value]); 7441 return this; 7442 }); 7443 7444 function checkInstance(x, methodName) { 7445 if (!isObject(x) || !hasOwnProperty.call(x, '_id')) { 7446 throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x); 7447 } 7448 } 7449 7450 function genId(prefix) { 7451 return prefix + '_' + rand() + '.' + rand(); 7452 } 7453 7454 function rand() { 7455 return Math.random().toString().substring(2); 7456 } 7457 7458 defineProperty(WeakMap, '_polyfill', true); 7459 return WeakMap; 7460 }(); 7461 7462 function isObject(x) { 7463 return Object(x) === x; 7464 } 7465})(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal); 7466 7467var npo_src = createCommonjsModule(function (module) { 7468/*! Native Promise Only 7469 v0.8.1 (c) Kyle Simpson 7470 MIT License: http://getify.mit-license.org 7471*/ 7472(function UMD(name, context, definition) { 7473 // special form of UMD for polyfilling across evironments 7474 context[name] = context[name] || definition(); 7475 7476 if ( module.exports) { 7477 module.exports = context[name]; 7478 } 7479})("Promise", typeof commonjsGlobal != "undefined" ? commonjsGlobal : commonjsGlobal, function DEF() { 7480 7481 var builtInProp, 7482 cycle, 7483 scheduling_queue, 7484 ToString = Object.prototype.toString, 7485 timer = typeof setImmediate != "undefined" ? function timer(fn) { 7486 return setImmediate(fn); 7487 } : setTimeout; // dammit, IE8. 7488 7489 try { 7490 Object.defineProperty({}, "x", {}); 7491 7492 builtInProp = function builtInProp(obj, name, val, config) { 7493 return Object.defineProperty(obj, name, { 7494 value: val, 7495 writable: true, 7496 configurable: config !== false 7497 }); 7498 }; 7499 } catch (err) { 7500 builtInProp = function builtInProp(obj, name, val) { 7501 obj[name] = val; 7502 return obj; 7503 }; 7504 } // Note: using a queue instead of array for efficiency 7505 7506 7507 scheduling_queue = function Queue() { 7508 var first, last, item; 7509 7510 function Item(fn, self) { 7511 this.fn = fn; 7512 this.self = self; 7513 this.next = void 0; 7514 } 7515 7516 return { 7517 add: function add(fn, self) { 7518 item = new Item(fn, self); 7519 7520 if (last) { 7521 last.next = item; 7522 } else { 7523 first = item; 7524 } 7525 7526 last = item; 7527 item = void 0; 7528 }, 7529 drain: function drain() { 7530 var f = first; 7531 first = last = cycle = void 0; 7532 7533 while (f) { 7534 f.fn.call(f.self); 7535 f = f.next; 7536 } 7537 } 7538 }; 7539 }(); 7540 7541 function schedule(fn, self) { 7542 scheduling_queue.add(fn, self); 7543 7544 if (!cycle) { 7545 cycle = timer(scheduling_queue.drain); 7546 } 7547 } // promise duck typing 7548 7549 7550 function isThenable(o) { 7551 var _then, 7552 o_type = typeof o; 7553 7554 if (o != null && (o_type == "object" || o_type == "function")) { 7555 _then = o.then; 7556 } 7557 7558 return typeof _then == "function" ? _then : false; 7559 } 7560 7561 function notify() { 7562 for (var i = 0; i < this.chain.length; i++) { 7563 notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]); 7564 } 7565 7566 this.chain.length = 0; 7567 } // NOTE: This is a separate function to isolate 7568 // the
7568\`try..catch\` so that other code can be 7569 // optimized better 7570 7571 7572 function notifyIsolated(self, cb, chain) { 7573 var ret, _then; 7574 7575 try { 7576 if (cb === false) { 7577 chain.reject(self.msg); 7578 } else { 7579 if (cb === true) { 7580 ret = self.msg; 7581 } else { 7582 ret = cb.call(void 0, self.msg); 7583 } 7584 7585 if (ret === chain.promise) { 7586 chain.reject(TypeError("Promise-chain cycle")); 7587 } else if (_then = isThenable(ret)) { 7588 _then.call(ret, chain.resolve, chain.reject); 7589 } else { 7590 chain.resolve(ret); 7591 } 7592 } 7593 } catch (err) { 7594 chain.reject(err); 7595 } 7596 } 7597 7598 function resolve(msg) { 7599 var _then, 7600 self = this; // already triggered? 7601 7602 7603 if (self.triggered) { 7604 return; 7605 } 7606 7607 self.triggered = true; // unwrap 7608 7609 if (self.def) { 7610 self = self.def; 7611 } 7612 7613 try { 7614 if (_then = isThenable(msg)) { 7615 schedule(function () { 7616 var def_wrapper = new MakeDefWrapper(self); 7617 7618 try { 7619 _then.call(msg, function $resolve$() { 7620 resolve.apply(def_wrapper, arguments); 7621 }, function $reject$() { 7622 reject.apply(def_wrapper, arguments); 7623 }); 7624 } catch (err) { 7625 reject.call(def_wrapper, err); 7626 } 7627 }); 7628 } else { 7629 self.msg = msg; 7630 self.state = 1; 7631 7632 if (self.chain.length > 0) { 7633 schedule(notify, self); 7634 } 7635 } 7636 } catch (err) { 7637 reject.call(new MakeDefWrapper(self), err); 7638 } 7639 } 7640 7641 function reject(msg) { 7642 var self = this; // already triggered? 7643 7644 if (self.triggered) { 7645 return; 7646 } 7647 7648 self.triggered = true; // unwrap 7649 7650 if (self.def) { 7651 self = self.def; 7652 } 7653 7654 self.msg = msg; 7655 self.state = 2; 7656 7657 if (self.chain.length > 0) { 7658 schedule(notify, self); 7659 } 7660 } 7661 7662 function iteratePromises(Constructor, arr, resolver, rejecter) { 7663 for (var idx = 0; idx < arr.length; idx++) { 7664 (function IIFE(idx) { 7665 Constructor.resolve(arr[idx]).then(function $resolver$(msg) { 7666 resolver(idx, msg); 7667 }, rejecter); 7668 })(idx); 7669 } 7670 } 7671 7672 function MakeDefWrapper(self) { 7673 this.def = self; 7674 this.triggered = false; 7675 } 7676 7677 function MakeDef(self) { 7678 this.promise = self; 7679 this.state = 0; 7680 this.triggered = false; 7681 this.chain = []; 7682 this.msg = void 0; 7683 } 7684 7685 function Promise(executor) { 7686 if (typeof executor != "function") { 7687 throw TypeError("Not a function"); 7688 } 7689 7690 if (this.__NPO__ !== 0) { 7691 throw TypeError("Not a promise"); 7692 } // instance shadowing the inherited "brand" 7693 // to signal an already "initialized" promise 7694 7695 7696 this.__NPO__ = 1; 7697 var def = new MakeDef(this); 7698 7699 this["then"] = function then(success, failure) { 7700 var o = { 7701 success: typeof success == "function" ? success : true, 7702 failure: typeof failure == "function" ? failure : false 7703 }; // Note: \`then(..)\` itself can be borrowed to be used against 7704 // a different promise constructor for making the chained promise, 7705 // by substituting a different \`this\` binding. 7706 7707 o.promise = new this.constructor(function extractChain(resolve, reject) { 7708 if (typeof resolve != "function" || typeof reject != "function") { 7709 throw TypeError("Not a function"); 7710 } 7711 7712 o.resolve = resolve; 7713 o.reject = reject; 7714 }); 7715 def.chain.push(o); 7716 7717 if (def.state !== 0) { 7718 schedule(notify, def); 7719 } 7720 7721 return o.promise; 7722 }; 7723 7724 this["catch"] = function $catch$(failure) { 7725 return this.then(void 0, failure); 7726 }; 7727 7728 try { 7729 executor.call(void 0, function publicResolve(msg) { 7730 resolve.call(def, msg); 7731 }, function publicReject(msg) { 7732 reject.call(def, msg); 7733 }); 7734 } catch (err) { 7735 reject.call(def, err); 7736 } 7737 } 7738 7739 var PromisePrototype = builtInProp({}, "constructor", Promise, 7740 /*configurable=*/ 7741 false); // Note: Android 4 cannot use \`Object.defineProperty(..)\` here 7742 7743 Promise.prototype = PromisePrototype; // built-in "brand" to signal an "uninitialized" promise 7744 7745 builtInProp(PromisePrototype, "__NPO__", 0, 7746 /*configurable=*/ 7747 false); 7748 builtInProp(Promise, "resolve", function Promise$resolve(msg) { 7749 var Constructor = this; // spec mandated checks 7750 // note: best "isPromise" check that's practical for now 7751 7752 if (msg && typeof msg == "object" && msg.__NPO__ === 1) { 7753 return msg; 7754 } 7755 7756 return new Constructor(function executor(resolve, reject) { 7757 if (typeof resolve != "function" || typeof reject != "function") { 7758 throw TypeError("Not a function"); 7759 } 7760 7761 resolve(msg); 7762 }); 7763 }); 7764 builtInProp(Promise, "reject", function Promise$reject(msg) { 7765 return new this(function executor(resolve, reject) { 7766 if (typeof resolve != "function" || typeof reject != "function") { 7767 throw TypeError("Not a function"); 7768 } 7769 7770 reject(msg); 7771 }); 7772 }); 7773 builtInProp(Promise, "all", function Promise$all(arr) { 7774 var Constructor = this; // spec mandated checks 7775 7776 if (ToString.call(arr) != "[object Array]") { 7777 return Constructor.reject(TypeError("Not an array")); 7778 } 7779 7780 if (arr.length === 0) { 7781 return Constructor.resolve([]); 7782 } 7783 7784 return new Constructor(function executor(resolve, reject) { 7785 if (typeof resolve != "function" || typeof reject != "function") { 7786 throw TypeError("Not a function"); 7787 } 7788 7789 var len = arr.length, 7790 msgs = Array(len), 7791 count = 0; 7792 iteratePromises(Constructor, arr, function resolver(idx, msg) { 7793 msgs[idx] = msg; 7794 7795 if (++count === len) { 7796 resolve(msgs); 7797 } 7798 }, reject); 7799 }); 7800 }); 7801 builtInProp(Promise, "race", function Promise$race(arr) { 7802 var Constructor = this; // spec mandated checks 7803 7804 if (ToString.call(arr) != "[object Array]") { 7805 return Constructor.reject(TypeError("Not an array")); 7806 } 7807 7808 return new Constructor(function executor(resolve, reject) { 7809 if (typeof resolve != "function" || typeof reject != "function") { 7810 throw TypeError("Not a function"); 7811 } 7812 7813 iteratePromises(Constructor, arr, function resolver(idx, msg) { 7814 resolve(msg); 7815 }, reject); 7816 }); 7817 }); 7818 return Promise; 7819}); 7820}); 7821 7822/** 7823 * @module lib/callbacks 7824 */ 7825var callbackMap = new WeakMap(); 7826/** 7827 * Store a callback for a method or event for a player. 7828 * 7829 * @param {Player} player The player object. 7830 * @param {string} name The method or event name. 7831 * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback 7832 * The callback to call or an object with resolve and reject functions for a promise. 7833 * @return {void} 7834 */ 7835 7836function storeCallback(player, name, callback) { 7837 var playerCallbacks = callbackMap.get(player.element) || {}; 7838 7839 if (!(name in playerCallbacks)) { 7840 playerCallbacks[name] = []; 7841 } 7842 7843 playerCallbacks[name].push(callback); 7844 callbackMap.set(player.element, playerCallbacks); 7845} 7846/** 7847 * Get the callbacks for a player and event or method. 7848 * 7849 * @param {Player} player The player object. 7850 * @param {string} name The method or event name 7851 * @return {function[]} 7852 */ 7853 7854function getCallbacks(player, name) { 7855 var playerCallbacks = callbackMap.get(player.element) || {}; 7856 return playerCallbacks[name] || []; 7857} 7858/** 7859 * Remove a stored callback for a method or event for a player. 7860 * 7861 * @param {Player} player The player object. 7862 * @param {string} name The method or event name 7863 * @param {function} [callback] The specific callback to remove. 7864 * @return {boolean} Was this the last callback? 7865 */ 7866 7867function removeCallback(player, name, callback) { 7868 var playerCallbacks = callbackMap.get(player.element) || {}; 7869 7870 if (!playerCallbacks[name]) { 7871 return true; 7872 } // If no callback is passed, remove all callbacks for the event 7873 7874 7875 if (!callback) { 7876 playerCallbacks[name] = []; 7877 callbackMap.set(player.element, playerCallbacks); 7878 return true; 7879 } 7880 7881 var index = playerCallbacks[name].indexOf(callback); 7882 7883 if (index !== -1) { 7884 playerCallbacks[name].splice(index, 1); 7885 } 7886 7887 callbackMap.set(player.element, playerCallbacks); 7888 return playerCallbacks[name] && playerCallbacks[name].length === 0; 7889} 7890/** 7891 * Return the first stored callback for a player and event or method. 7892 * 7893 * @param {Player} player The player object. 7894 * @param {string} name The method or event name. 7895 * @return {function} The callback, or false if there were none 7896 */ 7897 7898function shiftCallbacks(player, name) { 7899 var playerCallbacks = getCallbacks(player, name); 7900 7901 if (playerCallbacks.length < 1) { 7902 return false;
vendor: 5,616 bytes, lines 7903-8103
7903 } 7904 7905 var callback = playerCallbacks.shift(); 7906 removeCallback(player, name, callback); 7907 return callback; 7908} 7909/** 7910 * Move callbacks associated with an element to another element. 7911 * 7912 * @param {HTMLElement} oldElement The old element. 7913 * @param {HTMLElement} newElement The new element. 7914 * @return {void} 7915 */ 7916 7917function swapCallbacks(oldElement, newElement) { 7918 var playerCallbacks = callbackMap.get(oldElement); 7919 callbackMap.set(newElement, playerCallbacks); 7920 callbackMap.delete(oldElement); 7921} 7922 7923/** 7924 * @module lib/postmessage 7925 */ 7926/** 7927 * Parse a message received from postMessage. 7928 * 7929 * @param {*} data The data received from postMessage. 7930 * @return {object} 7931 */ 7932 7933function parseMessageData(data) { 7934 if (typeof data === 'string') { 7935 try { 7936 data = JSON.parse(data); 7937 } catch (error) { 7938 // If the message cannot be parsed, throw the error as a warning 7939 console.warn(error); 7940 return {}; 7941 } 7942 } 7943 7944 return data; 7945} 7946/** 7947 * Post a message to the specified target. 7948 * 7949 * @param {Player} player The player object to use. 7950 * @param {string} method The API method to call. 7951 * @param {object} params The parameters to send to the player. 7952 * @return {void} 7953 */ 7954 7955function postMessage(player, method, params) { 7956 if (!player.element.contentWindow || !player.element.contentWindow.postMessage) { 7957 return; 7958 } 7959 7960 var message = { 7961 method: method 7962 }; 7963 7964 if (params !== undefined) { 7965 message.value = params; 7966 } // IE 8 and 9 do not support passing messages, so stringify them 7967 7968 7969 var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1')); 7970 7971 if (ieVersion >= 8 && ieVersion < 10) { 7972 message = JSON.stringify(message); 7973 } 7974 7975 player.element.contentWindow.postMessage(message, player.origin); 7976} 7977/** 7978 * Parse the data received from a message event. 7979 * 7980 * @param {Player} player The player that received the message. 7981 * @param {(Object|string)} data The message data. Strings will be parsed into JSON. 7982 * @return {void} 7983 */ 7984 7985function processData(player, data) { 7986 data = parseMessageData(data); 7987 var callbacks = []; 7988 var param; 7989 7990 if (data.event) { 7991 if (data.event === 'error') { 7992 var promises = getCallbacks(player, data.data.method); 7993 promises.forEach(function (promise) { 7994 var error = new Error(data.data.message); 7995 error.name = data.data.name; 7996 promise.reject(error); 7997 removeCallback(player, data.data.method, promise); 7998 }); 7999 } 8000 8001 callbacks = getCallbacks(player, "event:".concat(data.event)); 8002 param = data.data; 8003 } else if (data.method) { 8004 var callback = shiftCallbacks(player, data.method); 8005 8006 if (callback) { 8007 callbacks.push(callback); 8008 param = data.value; 8009 } 8010 } 8011 8012 callbacks.forEach(function (callback) { 8013 try { 8014 if (typeof callback === 'function') { 8015 callback.call(player, param); 8016 return; 8017 } 8018 8019 callback.resolve(param); 8020 } catch (e) {// empty 8021 } 8022 }); 8023} 8024 8025/** 8026 * @module lib/embed 8027 */ 8028var oEmbedParameters = ['autopause', 'autoplay', 'background', 'byline', 'color', 'controls', 'dnt', 'height', 'id', 'interactive_params', 'keyboard', 'loop', 'maxheight', 'maxwidth', 'muted', 'playsinline', 'portrait', 'responsive', 'speed', 'texttrack', 'title', 'transparent', 'url', 'width']; 8029/** 8030 * Get the 'data-vimeo'-prefixed attributes from an element as an object. 8031 * 8032 * @param {HTMLElement} element The element. 8033 * @param {Object} [defaults={}] The default values to use. 8034 * @return {Object<string, string>} 8035 */ 8036 8037function getOEmbedParameters(element) { 8038 var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 8039 return oEmbedParameters.reduce(function (params, param) { 8040 var value = element.getAttribute("data-vimeo-".concat(param)); 8041 8042 if (value || value === '') { 8043 params[param] = value === '' ? 1 : value; 8044 } 8045 8046 return params; 8047 }, defaults); 8048} 8049/** 8050 * Create an embed from oEmbed data inside an element. 8051 * 8052 * @param {object} data The oEmbed data. 8053 * @param {HTMLElement} element The element to put the iframe in. 8054 * @return {HTMLIFrameElement} The iframe embed. 8055 */ 8056 8057function createEmbed(_ref, element) { 8058 var html = _ref.html; 8059 8060 if (!element) { 8061 throw new TypeError('An element must be provided'); 8062 } 8063 8064 if (element.getAttribute('data-vimeo-initialized') !== null) { 8065 return element.querySelector('iframe'); 8066 } 8067 8068 var div = document.createElement('div'); 8069 div.innerHTML = html; 8070 element.appendChild(div.firstChild); 8071 element.setAttribute('data-vimeo-initialized', 'true'); 8072 return element.querySelector('iframe'); 8073} 8074/** 8075 * Make an oEmbed call for the specified URL. 8076 * 8077 * @param {string} videoUrl The vimeo.com url for the video. 8078 * @param {Object} [params] Parameters to pass to oEmbed. 8079 * @param {HTMLElement} element The element. 8080 * @return {Promise} 8081 */ 8082 8083function getOEmbedData(videoUrl) { 8084 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 8085 var element = arguments.length > 2 ? arguments[2] : undefined; 8086 return new Promise(function (resolve, reject) { 8087 if (!isVimeoUrl(videoUrl)) { 8088 throw new TypeError("\\u201C".concat(videoUrl, "\\u201D is not a vimeo.com url.")); 8089 } 8090 8091 var url = "https://vimeo.com/api/oembed.json?url=".concat(encodeURIComponent(videoUrl)); 8092 8093 for (var param in params) { 8094 if (params.hasOwnProperty(param)) { 8095 url += "&".concat(param, "=").concat(encodeURIComponent(params[param])); 8096 } 8097 } 8098 8099 var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest(); 8100 xhr.open('GET', url, true); 8101 8102 xhr.onload = function () { 8103 if (xhr.status === 404) {
8104 reject(new Error("\\u201C".concat(videoUrl, "\\u201D was not found."))); 8105 return; 8106 } 8107 8108 if (xhr.status === 403) { 8109 reject(new Error("\\u201C".concat(videoUrl, "\\u201D is not embeddable."))); 8110 return; 8111 } 8112 8113 try { 8114 var json = JSON.parse(xhr.responseText); // Check api response for 403 on oembed 8115 8116 if (json.domain_status_code === 403) { 8117 // We still want to create the embed to give users visual feedback 8118 createEmbed(json, element); 8119 reject(new Error("\\u201C".concat(videoUrl, "\
vendor: 9,786 bytes, lines 8119-8424
8119\u201D is not embeddable."))); 8120 return; 8121 } 8122 8123 resolve(json); 8124 } catch (error) { 8125 reject(error); 8126 } 8127 }; 8128 8129 xhr.onerror = function () { 8130 var status = xhr.status ? " (".concat(xhr.status, ")") : ''; 8131 reject(new Error("There was an error fetching the embed code from Vimeo".concat(status, "."))); 8132 }; 8133 8134 xhr.send(); 8135 }); 8136} 8137/** 8138 * Initialize all embeds within a specific element 8139 * 8140 * @param {HTMLElement} [parent=document] The parent element. 8141 * @return {void} 8142 */ 8143 8144function initializeEmbeds() { 8145 var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; 8146 var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]')); 8147 8148 var handleError = function handleError(error) { 8149 if ('console' in window && console.error) { 8150 console.error("There was an error creating an embed: ".concat(error)); 8151 } 8152 }; 8153 8154 elements.forEach(function (element) { 8155 try { 8156 // Skip any that have data-vimeo-defer 8157 if (element.getAttribute('data-vimeo-defer') !== null) { 8158 return; 8159 } 8160 8161 var params = getOEmbedParameters(element); 8162 var url = getVimeoUrl(params); 8163 getOEmbedData(url, params, element).then(function (data) { 8164 return createEmbed(data, element); 8165 }).catch(handleError); 8166 } catch (error) { 8167 handleError(error); 8168 } 8169 }); 8170} 8171/** 8172 * Resize embeds when messaged by the player. 8173 * 8174 * @param {HTMLElement} [parent=document] The parent element. 8175 * @return {void} 8176 */ 8177 8178function resizeEmbeds() { 8179 var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; 8180 8181 // Prevent execution if users include the player.js script multiple times. 8182 if (window.VimeoPlayerResizeEmbeds_) { 8183 return; 8184 } 8185 8186 window.VimeoPlayerResizeEmbeds_ = true; 8187 8188 var onMessage = function onMessage(event) { 8189 if (!isVimeoUrl(event.origin)) { 8190 return; 8191 } // 'spacechange' is fired only on embeds with cards 8192 8193 8194 if (!event.data || event.data.event !== 'spacechange') { 8195 return; 8196 } 8197 8198 var iframes = parent.querySelectorAll('iframe'); 8199 8200 for (var i = 0; i < iframes.length; i++) { 8201 if (iframes[i].contentWindow !== event.source) { 8202 continue; 8203 } // Change padding-bottom of the enclosing div to accommodate 8204 // card carousel without distorting aspect ratio 8205 8206 8207 var space = iframes[i].parentElement; 8208 space.style.paddingBottom = "".concat(event.data.data[0].bottom, "px"); 8209 break; 8210 } 8211 }; 8212 8213 window.addEventListener('message', onMessage); 8214} 8215/** 8216 * Add chapters to existing metadata for Google SEO 8217 * 8218 * @param {HTMLElement} [parent=document] The parent element. 8219 * @return {void} 8220 */ 8221 8222function initAppendVideoMetadata() { 8223 var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; 8224 8225 // Prevent execution if users include the player.js script multiple times. 8226 if (window.VimeoSeoMetadataAppended) { 8227 return; 8228 } 8229 8230 window.VimeoSeoMetadataAppended = true; 8231 8232 var onMessage = function onMessage(event) { 8233 if (!isVimeoUrl(event.origin)) { 8234 return; 8235 } 8236 8237 var data = parseMessageData(event.data); 8238 8239 if (!data || data.event !== 'ready') { 8240 return; 8241 } 8242 8243 var iframes = parent.querySelectorAll('iframe'); 8244 8245 for (var i = 0; i < iframes.length; i++) { 8246 var iframe = iframes[i]; // Initiate appendVideoMetadata if iframe is a Vimeo embed 8247 8248 var isValidMessageSource = iframe.contentWindow === event.source; 8249 8250 if (isVimeoEmbed(iframe.src) && isValidMessageSource) { 8251 var player = new Player$1(iframe); 8252 player.callMethod('appendVideoMetadata', window.location.href); 8253 } 8254 } 8255 }; 8256 8257 window.addEventListener('message', onMessage); 8258} 8259 8260/* MIT License 8261 8262Copyright (c) Sindre Sorhus <[email protected]> (sindresorhus.com) 8263 8264Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8265 8266The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8267 8268THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8269Terms */ 8270function initializeScreenfull() { 8271 var fn = function () { 8272 var val; 8273 var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'], // New WebKit 8274 ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'], // Old WebKit 8275 ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']]; 8276 var i = 0; 8277 var l = fnMap.length; 8278 var ret = {}; 8279 8280 for (; i < l; i++) { 8281 val = fnMap[i]; 8282 8283 if (val && val[1] in document) { 8284 for (i = 0; i < val.length; i++) { 8285 ret[fnMap[0][i]] = val[i]; 8286 } 8287 8288 return ret; 8289 } 8290 } 8291 8292 return false; 8293 }(); 8294 8295 var eventNameMap = { 8296 fullscreenchange: fn.fullscreenchange, 8297 fullscreenerror: fn.fullscreenerror 8298 }; 8299 var screenfull = { 8300 request: function request(element) { 8301 return new Promise(function (resolve, reject) { 8302 var onFullScreenEntered = function onFullScreenEntered() { 8303 screenfull.off('fullscreenchange', onFullScreenEntered); 8304 resolve(); 8305 }; 8306 8307 screenfull.on('fullscreenchange', onFullScreenEntered); 8308 element = element || document.documentElement; 8309 var returnPromise = element[fn.requestFullscreen](); 8310 8311 if (returnPromise instanceof Promise) { 8312 returnPromise.then(onFullScreenEntered).catch(reject); 8313 } 8314 }); 8315 }, 8316 exit: function exit() { 8317 return new Promise(function (resolve, reject) { 8318 if (!screenfull.isFullscreen) { 8319 resolve(); 8320 return; 8321 } 8322 8323 var onFullScreenExit = function onFullScreenExit() { 8324 screenfull.off('fullscreenchange', onFullScreenExit); 8325 resolve(); 8326 }; 8327 8328 screenfull.on('fullscreenchange', onFullScreenExit); 8329 var returnPromise = document[fn.exitFullscreen](); 8330 8331 if (returnPromise instanceof Promise) { 8332 returnPromise.then(onFullScreenExit).catch(reject); 8333 } 8334 }); 8335 }, 8336 on: function on(event, callback) { 8337 var eventName = eventNameMap[event]; 8338 8339 if (eventName) { 8340 document.addEventListener(eventName, callback); 8341 } 8342 }, 8343 off: function off(event, callback) { 8344 var eventName = eventNameMap[event]; 8345 8346 if (eventName) { 8347 document.removeEventListener(eventName, callback); 8348 } 8349 } 8350 }; 8351 Object.defineProperties(screenfull, { 8352 isFullscreen: { 8353 get: function get() { 8354 return Boolean(document[fn.fullscreenElement]); 8355 } 8356 }, 8357 element: { 8358 enumerable: true, 8359 get: function get() { 8360 return document[fn.fullscreenElement]; 8361 } 8362 }, 8363 isEnabled: { 8364 enumerable: true, 8365 get: function get() { 8366 // Coerce to boolean in case of old WebKit 8367 return Boolean(document[fn.fullscreenEnabled]); 8368 } 8369 } 8370 }); 8371 return screenfull; 8372} 8373 8374var playerMap = new WeakMap(); 8375var readyMap = new WeakMap(); 8376var screenfull = {}; 8377 8378var Player$1 = /*#__PURE__*/function () { 8379 /** 8380 * Create a Player. 8381 * 8382 * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo 8383 * player iframe, and id, or a jQuery object. 8384 * @param {object} [options] oEmbed parameters to use when creating an embed in the element. 8385 * @return {Player} 8386 */ 8387 function Player(element) { 8388 var _this = this; 8389 8390 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 8391 8392 _classCallCheck(this, Player); 8393 8394 /* global jQuery */ 8395 if (window.jQuery && element instanceof jQuery) { 8396 if (element.length > 1 && window.console && console.warn) { 8397 console.warn('A jQuery object with multiple elements was passed, using the first element.'); 8398 } 8399 8400 element = element[0]; 8401 } // Find an element by ID 8402 8403 8404 if (typeof document !== 'undefined' && typeof element === 'string') { 8405 element = document.getElementById(element); 8406 } // Not an element! 8407 8408 8409 if (!isDomElement(element)) { 8410 throw new TypeError('You must pass either a valid element or a valid id.'); 8411 } // Already initialized an embed in this div, so grab the iframe 8412 8413 8414 if (element.nodeName !== 'IFRAME') { 8415 var iframe = element.querySelector('iframe'); 8416 8417 if (iframe) { 8418 element = iframe; 8419 } 8420 } // iframe url is not a Vimeo url 8421 8422 8423 if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) { 8424 throw new Error('The player element passed isn
vendor: 5,511 bytes, lines 8424-8605
8424\u2019t a Vimeo embed.'); 8425 } // If there is already a player object in the map, return that 8426 8427 8428 if (playerMap.has(element)) { 8429 return playerMap.get(element); 8430 } 8431 8432 this._window = element.ownerDocument.defaultView; 8433 this.element = element; 8434 this.origin = '*'; 8435 var readyPromise = new npo_src(function (resolve, reject) { 8436 _this._onMessage = function (event) { 8437 if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) { 8438 return; 8439 } 8440 8441 if (_this.origin === '*') { 8442 _this.origin = event.origin; 8443 } 8444 8445 var data = parseMessageData(event.data); 8446 var isError = data && data.event === 'error'; 8447 var isReadyError = isError && data.data && data.data.method === 'ready'; 8448 8449 if (isReadyError) { 8450 var error = new Error(data.data.message); 8451 error.name = data.data.name; 8452 reject(error); 8453 return; 8454 } 8455 8456 var isReadyEvent = data && data.event === 'ready'; 8457 var isPingResponse = data && data.method === 'ping'; 8458 8459 if (isReadyEvent || isPingResponse) { 8460 _this.element.setAttribute('data-ready', 'true'); 8461 8462 resolve(); 8463 return; 8464 } 8465 8466 processData(_this, data); 8467 }; 8468 8469 _this._window.addEventListener('message', _this._onMessage); 8470 8471 if (_this.element.nodeName !== 'IFRAME') { 8472 var params = getOEmbedParameters(element, options); 8473 var url = getVimeoUrl(params); 8474 getOEmbedData(url, params, element).then(function (data) { 8475 var iframe = createEmbed(data, element); // Overwrite element with the new iframe, 8476 // but store reference to the original element 8477 8478 _this.element = iframe; 8479 _this._originalElement = element; 8480 swapCallbacks(element, iframe); 8481 playerMap.set(_this.element, _this); 8482 return data; 8483 }).catch(reject); 8484 } 8485 }); // Store a copy of this Player in the map 8486 8487 readyMap.set(this, readyPromise); 8488 playerMap.set(this.element, this); // Send a ping to the iframe so the ready promise will be resolved if 8489 // the player is already ready. 8490 8491 if (this.element.nodeName === 'IFRAME') { 8492 postMessage(this, 'ping'); 8493 } 8494 8495 if (screenfull.isEnabled) { 8496 var exitFullscreen = function exitFullscreen() { 8497 return screenfull.exit(); 8498 }; 8499 8500 this.fullscreenchangeHandler = function () { 8501 if (screenfull.isFullscreen) { 8502 storeCallback(_this, 'event:exitFullscreen', exitFullscreen); 8503 } else { 8504 removeCallback(_this, 'event:exitFullscreen', exitFullscreen); 8505 } // eslint-disable-next-line 8506 8507 8508 _this.ready().then(function () { 8509 postMessage(_this, 'fullscreenchange', screenfull.isFullscreen); 8510 }); 8511 }; 8512 8513 screenfull.on('fullscreenchange', this.fullscreenchangeHandler); 8514 } 8515 8516 return this; 8517 } 8518 /** 8519 * Get a promise for a method. 8520 * 8521 * @param {string} name The API method to call. 8522 * @param {Object} [args={}] Arguments to send via postMessage. 8523 * @return {Promise} 8524 */ 8525 8526 8527 _createClass(Player, [{ 8528 key: "callMethod", 8529 value: function callMethod(name) { 8530 var _this2 = this; 8531 8532 var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 8533 return new npo_src(function (resolve, reject) { 8534 // We are storing the resolve/reject handlers to call later, so we 8535 // can\u2019t return here. 8536 // eslint-disable-next-line promise/always-return 8537 return _this2.ready().then(function () { 8538 storeCallback(_this2, name, { 8539 resolve: resolve, 8540 reject: reject 8541 }); 8542 postMessage(_this2, name, args); 8543 }).catch(reject); 8544 }); 8545 } 8546 /** 8547 * Get a promise for the value of a player property. 8548 * 8549 * @param {string} name The property name 8550 * @return {Promise} 8551 */ 8552 8553 }, { 8554 key: "get", 8555 value: function get(name) { 8556 var _this3 = this; 8557 8558 return new npo_src(function (resolve, reject) { 8559 name = getMethodName(name, 'get'); // We are storing the resolve/reject handlers to call later, so we 8560 // can\u2019t return here. 8561 // eslint-disable-next-line promise/always-return 8562 8563 return _this3.ready().then(function () { 8564 storeCallback(_this3, name, { 8565 resolve: resolve, 8566 reject: reject 8567 }); 8568 postMessage(_this3, name); 8569 }).catch(reject); 8570 }); 8571 } 8572 /** 8573 * Get a promise for setting the value of a player property. 8574 * 8575 * @param {string} name The API method to call. 8576 * @param {mixed} value The value to set. 8577 * @return {Promise} 8578 */ 8579 8580 }, { 8581 key: "set", 8582 value: function set(name, value) { 8583 var _this4 = this; 8584 8585 return new npo_src(function (resolve, reject) { 8586 name = getMethodName(name, 'set'); 8587 8588 if (value === undefined || value === null) { 8589 throw new TypeError('There must be a value to set.'); 8590 } // We are storing the resolve/reject handlers to call later, so we 8591 // can\u2019t return here. 8592 // eslint-disable-next-line promise/always-return 8593 8594 8595 return _this4.ready().then(function () { 8596 storeCallback(_this4, name, { 8597 resolve: resolve, 8598 reject: reject 8599 }); 8600 postMessage(_this4, name, value); 8601 }).catch(reject); 8602 }); 8603 } 8604 /** 8605 * Add an event listener for the specified event. Will call the
8606 * callback with a single parameter, \`data\`, that contains the data for 8607 * that event. 8608 * 8609 * @param {string} eventName The name of the event. 8610 * @param {function(*)} callback The function to call when the event fires. 8611 * @return {void} 8612 */ 8613 8614 }, { 8615 key: "on", 8616 value: function on(eventName, callback) { 8617 if (!eventName) { 8618 throw new TypeError('You must pass an event name.'); 8619 } 8620 8621 if (!callback) { 8622 throw new TypeError('You must pass a callback function.'); 8623 } 8624 8625 if (typeof callback !== 'function') { 8626 throw new TypeError('The callback must be a function.'); 8627 } 8628 8629 var callbacks = getCallbacks(this, "event:".concat(eventName)); 8630 8631 if (callbacks.length === 0) { 8632 this.callMethod('addEventListener', eventName).catch(function () {// Ignore the error. There will be an error event fired that 8633 // will trigger the error callback if they are listening. 8634 }); 8635 } 8636 8637 storeCallback(this, "event:".concat(eventName), callback); 8638 } 8639 /** 8640 * Remove an event listener for the specified event. Will remove all 8641 * listeners for that event if a \`callback\` isn\u2019t passed, or only that 8642 * specific callback if it is passed. 8643 * 8644 * @param {string} eventName The name of the event. 8645 * @param {function} [callback] The specific callback to remove. 8646 * @return {void} 8647 */ 8648 8649 }, { 8650 key: "off", 8651 value: function off(eventName, callback) { 8652 if (!eventName) { 8653 throw new TypeError('You must pass an event name.'); 8654 } 8655 8656 if (callback && typeof callback !== 'function') { 8657 throw new TypeError('The callback must be a function.'); 8658 } 8659 8660 var lastCallback = removeCallback(this, "event:".concat(eventName), callback); // If there are no callbacks left, remove the listener 8661 8662 if (lastCallback) { 8663 this.callMethod('removeEventListener', eventName).catch(function (e) {// Ignore the error. There will be an error event fired that 8664 // will trigger the error callback if they are listening. 8665 }); 8666 } 8667 } 8668 /** 8669 * A promise to load a new video. 8670 *
8671 * @promise LoadVideoPromise 8672 * @fulfill {number} The video with this id or url successfully loaded. 8673 * @reject {TypeError} The id was not a number. 8674 */ 8675 8676 /** 8677 * Load a new video into this embed. The promise will be resolved if 8678 * the video is successfully loaded, or it will be rejected if it could 8679 * not be loaded. 8680 * 8681 * @param {number|string|object} options The id of the video, the url of the video, or an object with embed options. 8682 * @return {LoadVideoPromise} 8683 */ 8684 8685 }, { 8686 key: "loadVideo", 8687 value: function loadVideo(options) { 8688 return this.callMethod('loadVideo', options); 8689 } 8690 /** 8691 * A promise to perform an action when the Player is ready. 8692 * 8693 * @todo document errors 8694 * @promise LoadVideoPromise 8695 * @fulfill {void} 8696 */ 8697 8698 /** 8699 * Trigger a function when the player iframe has initialized. You do not 8700 * need to wait for \`ready\` to trigger to begin adding event listeners 8701 * or calling other methods. 8702 * 8703 * @return {ReadyPromise} 8704 */ 8705 8706 }, { 8707 key: "ready", 8708 value: function ready() { 8709 var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) { 8710 reject(new Error('Unknown player. Probably unloaded.')); 8711 }); 8712 return npo_src.resolve(readyPromise); 8713 } 8714 /** 8715 * A promise to add a cue point to the player. 8716 * 8717 * @promise AddCuePointPromise 8718 * @fulfill {string} The id of the cue point to use for removeCuePoint. 8719 * @reject {RangeError} the time was less than 0 or greater than the 8720 * video\u2019s duration. 8721 * @reject {UnsupportedError} Cue points are not supported with the current 8722 * player or browser. 8723 */ 8724 8725 /** 8726 * Add a cue point to the player. 8727 * 8728 * @param {number} time The time for the cue point. 8729 * @param {object} [data] Arbitrary data to be returned with the cue point. 8730 * @return {AddCuePointPromise} 8731 */ 8732 8733 }, { 8734 key: "addCuePoint", 8735 value: function addCuePoint(time) { 8736 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 8737 return this.callMethod('addCuePoint', { 8738 time: time, 8739 data: data 8740 }); 8741 } 8742 /** 8743 * A promise to remove a cue point from the player. 8744 * 8745 * @promise AddCuePointPromise 8746 * @fulfill {string} The id of the cue point that was removed. 8747 * @reject {InvalidCuePoint} The cue point with the specified id was not 8748 * found. 8749 * @reject {UnsupportedError} Cue points are not supported with the current 8750 * player or browser. 8751 */ 8752 8753 /** 8754 * Remove a cue point from the video. 8755 * 8756 * @param {string} id The id of the cue point to remove. 8757 * @return {RemoveCuePointPromise} 8758 */ 8759 8760 }, { 8761 key: "removeCuePoint", 8762 value: function removeCuePoint(id) { 8763 return this.callMethod('removeCuePoint', id); 8764 } 8765 /** 8766 * A representation of a text track on a video. 8767 * 8768 * @typedef {Object} VimeoTextTrack 8769 * @property {string} language The ISO language code. 8770 * @property {string} kind The kind of track it is (captions or subtitles). 8771 * @property {string} label The human\u2010readable label for the track. 8772 */ 8773 8774 /** 8775 * A promise to enable a text track. 8776 * 8777 * @promise EnableTextTrackPromise 8778 * @fulfill {VimeoTextTrack} The text track that was enabled. 8779 * @reject {InvalidTrackLanguageError} No track was available with the 8780 * specified language. 8781 * @reject {InvalidTrackError} No track was available with the specified 8782 * language and kind. 8783 */ 8784 8785 /** 8786 * Enable the text track with the specified language, and optionally the 8787 * specified kind (captions or subtitles). 8788 * 8789 * When set via the API, the track language will not change the viewer\u2019s 8790 * stored preference. 8791 * 8792 * @param {string} language The two\u2010letter language code. 8793 * @param {string} [kind] The kind of track to enable (captions or subtitles). 8794 * @return {EnableTextTrackPromise} 8795 */ 8796 8797 }, { 8798 key: "enableTextTrack", 8799 value: function enableTextTrack(language, kind) { 8800 if (!language) { 8801 throw new TypeError('You must pass a language.'); 8802 } 8803 8804 return this.callMethod('enableTextTrack', { 8805 language: language, 8806 kind: kind 8807 }); 8808 } 8809 /** 8810 * A promise to disable the active text track. 8811 * 8812 * @promise DisableTextTrackPromise 8813 * @fulfill {void} The track was disabled. 8814 */ 8815 8816 /** 8817 * Disable the currently-active text track. 8818 * 8819 * @return {DisableTextTrackPromise} 8820 */ 8821 8822 }, { 8823 key: "disableTextTrack", 8824 value: function disableTextTrack() { 8825 return this.callMethod('disableTextTrack'); 8826 } 8827 /** 8828 * A promise to pause the video. 8829 * 8830 * @promise PausePromise 8831 * @fulfill {void} The video was paused. 8832 */ 8833 8834 /** 8835 * Pause the video if it\u2019s playing. 8836 * 8837 * @return {PausePromise} 8838 */ 8839 8840 }, { 8841 key: "pause", 8842 value: function pause() { 8843 return this.callMethod('pause'); 8844 } 8845 /** 8846 * A promise to play the video. 8847 * 8848 * @promise PlayPromise 8849 * @fulfill {void} The video was played. 8850 */ 8851 8852 /** 8853 * Play the video if it\u2019s paused. **Note:** on iOS and s
vendor: 33,632 bytes, lines 8853-10130
8853ome other 8854 * mobile devices, you cannot programmatically trigger play. Once the 8855 * viewer has tapped on the play button in the player, however, you 8856 * will be able to use this function. 8857 * 8858 * @return {PlayPromise} 8859 */ 8860 8861 }, { 8862 key: "play", 8863 value: function play() { 8864 return this.callMethod('play'); 8865 } 8866 /** 8867 * Request that the player enters fullscreen. 8868 * @return {Promise} 8869 */ 8870 8871 }, { 8872 key: "requestFullscreen", 8873 value: function requestFullscreen() { 8874 if (screenfull.isEnabled) { 8875 return screenfull.request(this.element); 8876 } 8877 8878 return this.callMethod('requestFullscreen'); 8879 } 8880 /** 8881 * Request that the player exits fullscreen. 8882 * @return {Promise} 8883 */ 8884 8885 }, { 8886 key: "exitFullscreen", 8887 value: function exitFullscreen() { 8888 if (screenfull.isEnabled) { 8889 return screenfull.exit(); 8890 } 8891 8892 return this.callMethod('exitFullscreen'); 8893 } 8894 /** 8895 * Returns true if the player is currently fullscreen. 8896 * @return {Promise} 8897 */ 8898 8899 }, { 8900 key: "getFullscreen", 8901 value: function getFullscreen() { 8902 if (screenfull.isEnabled) { 8903 return npo_src.resolve(screenfull.isFullscreen); 8904 } 8905 8906 return this.get('fullscreen'); 8907 } 8908 /** 8909 * Request that the player enters picture-in-picture. 8910 * @return {Promise} 8911 */ 8912 8913 }, { 8914 key: "requestPictureInPicture", 8915 value: function requestPictureInPicture() { 8916 return this.callMethod('requestPictureInPicture'); 8917 } 8918 /** 8919 * Request that the player exits picture-in-picture. 8920 * @return {Promise} 8921 */ 8922 8923 }, { 8924 key: "exitPictureInPicture", 8925 value: function exitPictureInPicture() { 8926 return this.callMethod('exitPictureInPicture'); 8927 } 8928 /** 8929 * Returns true if the player is currently picture-in-picture. 8930 * @return {Promise} 8931 */ 8932 8933 }, { 8934 key: "getPictureInPicture", 8935 value: function getPictureInPicture() { 8936 return this.get('pictureInPicture'); 8937 } 8938 /** 8939 * A promise to unload the video. 8940 * 8941 * @promise UnloadPromise 8942 * @fulfill {void} The video was unloaded. 8943 */ 8944 8945 /** 8946 * Return the player to its initial state. 8947 * 8948 * @return {UnloadPromise} 8949 */ 8950 8951 }, { 8952 key: "unload", 8953 value: function unload() { 8954 return this.callMethod('unload'); 8955 } 8956 /** 8957 * Cleanup the player and remove it from the DOM 8958 * 8959 * It won't be usable and a new one should be constructed 8960 * in order to do any operations. 8961 * 8962 * @return {Promise} 8963 */ 8964 8965 }, { 8966 key: "destroy", 8967 value: function destroy() { 8968 var _this5 = this; 8969 8970 return new npo_src(function (resolve) { 8971 readyMap.delete(_this5); 8972 playerMap.delete(_this5.element); 8973 8974 if (_this5._originalElement) { 8975 playerMap.delete(_this5._originalElement); 8976 8977 _this5._originalElement.removeAttribute('data-vimeo-initialized'); 8978 } 8979 8980 if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) { 8981 // If we've added an additional wrapper div, remove that from the DOM. 8982 // If not, just remove the iframe element. 8983 if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) { 8984 _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode); 8985 } else { 8986 _this5.element.parentNode.removeChild(_this5.element); 8987 } 8988 } // If the clip is private there is a case where the element stays the 8989 // div element. Destroy should reset the div and remove the iframe child. 8990 8991 8992 if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) { 8993 _this5.element.removeAttribute('data-vimeo-initialized'); 8994 8995 var iframe = _this5.element.querySelector('iframe'); 8996 8997 if (iframe && iframe.parentNode) { 8998 // If we've added an additional wrapper div, remove that from the DOM. 8999 // If not, just remove the iframe element. 9000 if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) { 9001 iframe.parentNode.parentNode.removeChild(iframe.parentNode); 9002 } else { 9003 iframe.parentNode.removeChild(iframe); 9004 } 9005 } 9006 } 9007 9008 _this5._window.removeEventListener('message', _this5._onMessage); 9009 9010 if (screenfull.isEnabled) { 9011 screenfull.off('fullscreenchange', _this5.fullscreenchangeHandler); 9012 } 9013 9014 resolve(); 9015 }); 9016 } 9017 /** 9018 * A promise to get the autopause behavior of the video. 9019 * 9020 * @promise GetAutopausePromise 9021 * @fulfill {boolean} Whether autopause is turned on or off. 9022 * @reject {UnsupportedError} Autopause is not supported with the current 9023 * player or browser. 9024 */ 9025 9026 /** 9027 * Get the autopause behavior for this player. 9028 * 9029 * @return {GetAutopausePromise} 9030 */ 9031 9032 }, { 9033 key: "getAutopause", 9034 value: function getAutopause() { 9035 return this.get('autopause'); 9036 } 9037 /** 9038 * A promise to set the autopause behavior of the video. 9039 * 9040 * @promise SetAutopausePromise 9041 * @fulfill {boolean} Whether autopause is turned on or off. 9042 * @reject {UnsupportedError} Autopause is not supported with the current 9043 * player or browser. 9044 */ 9045 9046 /** 9047 * Enable or disable the autopause behavior of this player. 9048 * 9049 * By default, when another video is played in the same browser, this 9050 * player will automatically pause. Unless you have a specific reason 9051 * for doing so, we recommend that you leave autopause set to the 9052 * default (\`true\`). 9053 * 9054 * @param {boolean} autopause 9055 * @return {SetAutopausePromise} 9056 */ 9057 9058 }, { 9059 key: "setAutopause", 9060 value: function setAutopause(autopause) { 9061 return this.set('autopause', autopause); 9062 } 9063 /** 9064 * A promise to get the buffered property of the video. 9065 * 9066 * @promise GetBufferedPromise 9067 * @fulfill {Array} Buffered Timeranges converted to an Array. 9068 */ 9069 9070 /** 9071 * Get the buffered property of the video. 9072 * 9073 * @return {GetBufferedPromise} 9074 */ 9075 9076 }, { 9077 key: "getBuffered", 9078 value: function getBuffered() { 9079 return this.get('buffered'); 9080 } 9081 /** 9082 * @typedef {Object} CameraProperties 9083 * @prop {number} props.yaw - Number between 0 and 360. 9084 * @prop {number} props.pitch - Number between -90 and 90. 9085 * @prop {number} props.roll - Number between -180 and 180. 9086 * @prop {number} props.fov - The field of view in degrees. 9087 */ 9088 9089 /** 9090 * A promise to get the camera properties of the player. 9091 * 9092 * @promise GetCameraPromise 9093 * @fulfill {CameraProperties} The camera properties. 9094 */ 9095 9096 /** 9097 * For 360\xB0 videos get the camera properties for this player. 9098 * 9099 * @return {GetCameraPromise} 9100 */ 9101 9102 }, { 9103 key: "getCameraProps", 9104 value: function getCameraProps() { 9105 return this.get('cameraProps'); 9106 } 9107 /** 9108 * A promise to set the camera properties of the player. 9109 * 9110 * @promise SetCameraPromise 9111 * @fulfill {Object} The camera was successfully set. 9112 * @reject {RangeError} The range was out of bounds. 9113 */ 9114 9115 /** 9116 * For 360\xB0 videos set the camera properties for this player. 9117 * 9118 * @param {CameraProperties} camera The camera properties 9119 * @return {SetCameraPromise} 9120 */ 9121 9122 }, { 9123 key: "setCameraProps", 9124 value: function setCameraProps(camera) { 9125 return this.set('cameraProps', camera); 9126 } 9127 /** 9128 * A representation of a chapter. 9129 * 9130 * @typedef {Object} VimeoChapter 9131 * @property {number} startTime The start time of the chapter. 9132 * @property {object} title The title of the chapter. 9133 * @property {number} index The place in the order of Chapters. Starts at 1. 9134 */ 9135 9136 /** 9137 * A promise to get chapters for the video. 9138 * 9139 * @promise GetChaptersPromise 9140 * @fulfill {VimeoChapter[]} The chapters for the video. 9141 */ 9142 9143 /** 9144 * Get an array of all the chapters for the video. 9145 * 9146 * @return {GetChaptersPromise} 9147 */ 9148 9149 }, { 9150 key: "getChapters", 9151 value: function getChapters() { 9152 return this.get('chapters'); 9153 } 9154 /** 9155 * A promise to get the currently active chapter. 9156 * 9157 * @promise GetCurrentChaptersPromise 9158 * @fulfill {VimeoChapter|undefined} The current chapter for the video. 9159 */ 9160 9161 /** 9162 * Get the currently active chapter for the video. 9163 * 9164 * @return {GetCurrentChaptersPromise} 9165 */ 9166 9167 }, { 9168 key: "getCurrentChapter", 9169 value: function getCurrentChapter() { 9170 return this.get('currentChapter'); 9171 } 9172 /** 9173 * A promise to get the color of the player. 9174 * 9175 * @promise GetColorPromise 9176 * @fulfill {string} The hex color of the player. 9177 */ 9178 9179 /** 9180 * Get the color for this player. 9181 * 9182 * @return {GetColorPromise} 9183 */ 9184 9185 }, { 9186 key: "getColor", 9187 value: function getColor() { 9188 return this.get('color'); 9189 } 9190 /** 9191 * A promise to set the color of the player. 9192 * 9193 * @promise SetColorPromise 9194 * @fulfill {string} The color was successfully set. 9195 * @reject {TypeError} The string was not a valid hex or rgb color. 9196 * @reject {ContrastError} The color was set, but the contrast is 9197 * outside of the acceptable range. 9198 * @reject {EmbedSettingsError} The owner of the player has chosen to 9199 * use a specific color. 9200 */ 9201 9202 /** 9203 * Set the color of this player to a hex or rgb string. Setting the 9204 * color may fail if the owner of the video has set their embed 9205 * preferences to force a specific color. 9206 * 9207 * @param {string} color The hex or rgb color string to set. 9208 * @return {SetColorPromise} 9209 */ 9210 9211 }, { 9212 key: "setColor", 9213 value: function setColor(color) { 9214 return this.set('color', color); 9215 } 9216 /** 9217 * A representation of a cue point. 9218 * 9219 * @typedef {Object} VimeoCuePoint 9220 * @property {number} time The time of the cue point. 9221 * @property {object} data The data passed when adding the cue point. 9222 * @property {string} id The unique id for use with removeCuePoint. 9223 */ 9224 9225 /** 9226 * A promise to get the cue points of a video. 9227 * 9228 * @promise GetCuePointsPromise 9229 * @fulfill {VimeoCuePoint[]} The cue points added to the video. 9230 * @reject {UnsupportedError} Cue points are not supported with the current 9231 * player or browser. 9232 */ 9233 9234 /** 9235 * Get an array of the cue points added to the video. 9236 * 9237 * @return {GetCuePointsPromise} 9238 */ 9239 9240 }, { 9241 key: "getCuePoints", 9242 value: function getCuePoints() { 9243 return this.get('cuePoints'); 9244 } 9245 /** 9246 * A promise to get the current time of the video. 9247 * 9248 * @promise GetCurrentTimePromise 9249 * @fulfill {number} The current time in seconds. 9250 */ 9251 9252 /** 9253 * Get the current playback position in seconds. 9254 * 9255 * @return {GetCurrentTimePromise} 9256 */ 9257 9258 }, { 9259 key: "getCurrentTime", 9260 value: function getCurrentTime() { 9261 return this.get('currentTime'); 9262 } 9263 /** 9264 * A promise to set the current time of the video. 9265 * 9266 * @promise SetCurrentTimePromise 9267 * @fulfill {number} The actual current time that was set. 9268 * @reject {RangeError} the time was less than 0 or greater than the 9269 * video\u2019s duration. 9270 */ 9271 9272 /** 9273 * Set the current playback position in seconds. If the player was 9274 * paused, it will remain paused. Likewise, if the player was playing, 9275 * it will resume playing once the video has buffered. 9276 * 9277 * You can provide an accurate time and the player will attempt to seek 9278 * to as close to that time as possible. The exact time will be the 9279 * fulfilled value of the promise. 9280 * 9281 * @param {number} currentTime 9282 * @return {SetCurrentTimePromise} 9283 */ 9284 9285 }, { 9286 key: "setCurrentTime", 9287 value: function setCurrentTime(currentTime) { 9288 return this.set('currentTime', currentTime); 9289 } 9290 /** 9291 * A promise to get the duration of the video. 9292 * 9293 * @promise GetDurationPromise 9294 * @fulfill {number} The duration in seconds. 9295 */ 9296 9297 /** 9298 * Get the duration of the video in seconds. It will be rounded to the 9299 * nearest second before playback begins, and to the nearest thousandth 9300 * of a second after playback begins. 9301 * 9302 * @return {GetDurationPromise} 9303 */ 9304 9305 }, { 9306 key: "getDuration", 9307 value: function getDuration() { 9308 return this.get('duration'); 9309 } 9310 /** 9311 * A promise to get the ended state of the video. 9312 * 9313 * @promise GetEndedPromise 9314 * @fulfill {boolean} Whether or not the video has ended. 9315 */ 9316 9317 /** 9318 * Get the ended state of the video. The video has ended if 9319 * \`currentTime === duration\`. 9320 * 9321 * @return {GetEndedPromise} 9322 */ 9323 9324 }, { 9325 key: "getEnded", 9326 value: function getEnded() { 9327 return this.get('ended'); 9328 } 9329 /** 9330 * A promise to get the loop state of the player. 9331 * 9332 * @promise GetLoopPromise 9333 * @fulfill {boolean} Whether or not the player is set to loop. 9334 */ 9335 9336 /** 9337 * Get the loop state of the player. 9338 * 9339 * @return {GetLoopPromise} 9340 */ 9341 9342 }, { 9343 key: "getLoop", 9344 value: function getLoop() { 9345 return this.get('loop'); 9346 } 9347 /** 9348 * A promise to set the loop state of the player. 9349 * 9350 * @promise SetLoopPromise 9351 * @fulfill {boolean} The loop state that was set. 9352 */ 9353 9354 /** 9355 * Set the loop state of the player. When set to \`true\`, the player 9356 * will start over immediately once playback ends. 9357 * 9358 * @param {boolean} loop 9359 * @return {SetLoopPromise} 9360 */ 9361 9362 }, { 9363 key: "setLoop", 9364 value: function setLoop(loop) { 9365 return this.set('loop', loop); 9366 } 9367 /** 9368 * A promise to set the muted state of the player. 9369 * 9370 * @promise SetMutedPromise 9371 * @fulfill {boolean} The muted state that was set. 9372 */ 9373 9374 /** 9375 * Set the muted state of the player. When set to \`true\`, the player 9376 * volume will be muted. 9377 * 9378 * @param {boolean} muted 9379 * @return {SetMutedPromise} 9380 */ 9381 9382 }, { 9383 key: "setMuted", 9384 value: function setMuted(muted) { 9385 return this.set('muted', muted); 9386 } 9387 /** 9388 * A promise to get the muted state of the player. 9389 * 9390 * @promise GetMutedPromise 9391 * @fulfill {boolean} Whether or not the player is muted. 9392 */ 9393 9394 /** 9395 * Get the muted state of the player. 9396 * 9397 * @return {GetMutedPromise} 9398 */ 9399 9400 }, { 9401 key: "getMuted", 9402 value: function getMuted() { 9403 return this.get('muted'); 9404 } 9405 /** 9406 * A promise to get the paused state of the player. 9407 * 9408 * @promise GetLoopPromise 9409 * @fulfill {boolean} Whether or not the video is paused. 9410 */ 9411 9412 /** 9413 * Get the paused state of the player. 9414 * 9415 * @return {GetLoopPromise} 9416 */ 9417 9418 }, { 9419 key: "getPaused", 9420 value: function getPaused() { 9421 return this.get('paused'); 9422 } 9423 /** 9424 * A promise to get the playback rate of the player. 9425 * 9426 * @promise GetPlaybackRatePromise 9427 * @fulfill {number} The playback rate of the player on a scale from 0.5 to 2. 9428 */ 9429 9430 /** 9431 * Get the playback rate of the player on a scale from \`0.5\` to \`2\`. 9432 * 9433 * @return {GetPlaybackRatePromise} 9434 */ 9435 9436 }, { 9437 key: "getPlaybackRate", 9438 value: function getPlaybackRate() { 9439 return this.get('playbackRate'); 9440 } 9441 /** 9442 * A promise to set the playbackrate of the player. 9443 * 9444 * @promise SetPlaybackRatePromise 9445 * @fulfill {number} The playback rate was set. 9446 * @reject {RangeError} The playback rate was less than 0.5 or greater than 2. 9447 */ 9448 9449 /** 9450 * Set the playback rate of the player on a scale from \`0.5\` to \`2\`. When set 9451 * via the API, the playback rate will not be synchronized to other 9452 * players or stored as the viewer's preference. 9453 * 9454 * @param {number} playbackRate 9455 * @return {SetPlaybackRatePromise} 9456 */ 9457 9458 }, { 9459 key: "setPlaybackRate", 9460 value: function setPlaybackRate(playbackRate) { 9461 return this.set('playbackRate', playbackRate); 9462 } 9463 /** 9464 * A promise to get the played property of the video. 9465 * 9466 * @promise GetPlayedPromise 9467 * @fulfill {Array} Played Timeranges converted to an Array. 9468 */ 9469 9470 /** 9471 * Get the played property of the video. 9472 * 9473 * @return {GetPlayedPromise} 9474 */ 9475 9476 }, { 9477 key: "getPlayed", 9478 value: function getPlayed() { 9479 return this.get('played'); 9480 } 9481 /** 9482 * A promise to get the qualities available of the current video. 9483 * 9484 * @promise GetQualitiesPromise 9485 * @fulfill {Array} The qualities of the video. 9486 */ 9487 9488 /** 9489 * Get the qualities of the current video. 9490 * 9491 * @return {GetQualitiesPromise} 9492 */ 9493 9494 }, { 9495 key: "getQualities", 9496 value: function getQualities() { 9497 return this.get('qualities'); 9498 } 9499 /** 9500 * A promise to get the current set quality of the video. 9501 * 9502 * @promise GetQualityPromise 9503 * @fulfill {string} The current set quality. 9504 */ 9505 9506 /** 9507 * Get the current set quality of the video. 9508 * 9509 * @return {GetQualityPromise} 9510 */ 9511 9512 }, { 9513 key: "getQuality", 9514 value: function getQuality() { 9515 return this.get('quality'); 9516 } 9517 /** 9518 * A promise to set the video quality. 9519 * 9520 * @promise SetQualityPromise 9521 * @fulfill {number} The quality was set. 9522 * @reject {RangeError} The quality is not available. 9523 */ 9524 9525 /** 9526 * Set a video quality. 9527 * 9528 * @param {string} quality 9529 * @return {SetQualityPromise} 9530 */ 9531 9532 }, { 9533 key: "setQuality", 9534 value: function setQuality(quality) { 9535 return this.set('quality', quality); 9536 } 9537 /** 9538 * A promise to get the seekable property of the video. 9539 * 9540 * @promise GetSeekablePromise 9541 * @fulfill {Array} Seekable Timeranges converted to an Array. 9542 */ 9543 9544 /** 9545 * Get the seekable property of the video. 9546 * 9547 * @return {GetSeekablePromise} 9548 */ 9549 9550 }, { 9551 key: "getSeekable", 9552 value: function getSeekable() { 9553 return this.get('seekable'); 9554 } 9555 /** 9556 * A promise to get the seeking property of the player. 9557 * 9558 * @promise GetSeekingPromise 9559 * @fulfill {boolean} Whether or not the player is currently seeking. 9560 */ 9561 9562 /** 9563 * Get if the player is currently seeking. 9564 * 9565 * @return {GetSeekingPromise} 9566 */ 9567 9568 }, { 9569 key: "getSeeking", 9570 value: function getSeeking() { 9571 return this.get('seeking'); 9572 } 9573 /** 9574 * A promise to get the text tracks of a video. 9575 * 9576 * @promise GetTextTracksPromise 9577 * @fulfill {VimeoTextTrack[]} The text tracks associated with the video. 9578 */ 9579 9580 /** 9581 * Get an array of the text tracks that exist for the video. 9582 * 9583 * @return {GetTextTracksPromise} 9584 */ 9585 9586 }, { 9587 key: "getTextTracks", 9588 value: function getTextTracks() { 9589 return this.get('textTracks'); 9590 } 9591 /** 9592 * A promise to get the embed code for the video. 9593 * 9594 * @promise GetVideoEmbedCodePromise 9595 * @fulfill {string} The \`<iframe>\` embed code for the video. 9596 */ 9597 9598 /** 9599 * Get the \`<iframe>\` embed code for the video. 9600 * 9601 * @return {GetVideoEmbedCodePromise} 9602 */ 9603 9604 }, { 9605 key: "getVideoEmbedCode", 9606 value: function getVideoEmbedCode() { 9607 return this.get('videoEmbedCode'); 9608 } 9609 /** 9610 * A promise to get the id of the video. 9611 * 9612 * @promise GetVideoIdPromise 9613 * @fulfill {number} The id of the video. 9614 */ 9615 9616 /** 9617 * Get the id of the video. 9618 * 9619 * @return {GetVideoIdPromise} 9620 */ 9621 9622 }, { 9623 key: "getVideoId", 9624 value: function getVideoId() { 9625 return this.get('videoId'); 9626 } 9627 /** 9628 * A promise to get the title of the video. 9629 * 9630 * @promise GetVideoTitlePromise 9631 * @fulfill {number} The title of the video. 9632 */ 9633 9634 /** 9635 * Get the title of the video. 9636 * 9637 * @return {GetVideoTitlePromise} 9638 */ 9639 9640 }, { 9641 key: "getVideoTitle", 9642 value: function getVideoTitle() { 9643 return this.get('videoTitle'); 9644 } 9645 /** 9646 * A promise to get the native width of the video. 9647 * 9648 * @promise GetVideoWidthPromise 9649 * @fulfill {number} The native width of the video. 9650 */ 9651 9652 /** 9653 * Get the native width of the currently\u2010playing video. The width of 9654 * the highest\u2010resolution available will be used before playback begins. 9655 * 9656 * @return {GetVideoWidthPromise} 9657 */ 9658 9659 }, { 9660 key: "getVideoWidth", 9661 value: function getVideoWidth() { 9662 return this.get('videoWidth'); 9663 } 9664 /** 9665 * A promise to get the native height of the video. 9666 * 9667 * @promise GetVideoHeightPromise 9668 * @fulfill {number} The native height of the video. 9669 */ 9670 9671 /** 9672 * Get the native height of the currently\u2010playing video. The height of 9673 * the highest\u2010resolution available will be used before playback begins. 9674 * 9675 * @return {GetVideoHeightPromise} 9676 */ 9677 9678 }, { 9679 key: "getVideoHeight", 9680 value: function getVideoHeight() { 9681 return this.get('videoHeight'); 9682 } 9683 /** 9684 * A promise to get the vimeo.com url for the video. 9685 * 9686 * @promise GetVideoUrlPromise 9687 * @fulfill {number} The vimeo.com url for the video. 9688 * @reject {PrivacyError} The url isn\u2019t available because of the video\u2019s privacy setting. 9689 */ 9690 9691 /** 9692 * Get the vimeo.com url for the video. 9693 * 9694 * @return {GetVideoUrlPromise} 9695 */ 9696 9697 }, { 9698 key: "getVideoUrl", 9699 value: function getVideoUrl() { 9700 return this.get('videoUrl'); 9701 } 9702 /** 9703 * A promise to get the volume level of the player. 9704 * 9705 * @promise GetVolumePromise 9706 * @fulfill {number} The volume level of the player on a scale from 0 to 1. 9707 */ 9708 9709 /** 9710 * Get the current volume level of the player on a scale from \`0\` to \`1\`. 9711 * 9712 * Most mobile devices do not support an independent volume from the 9713 * system volume. In those cases, this method will always return \`1\`. 9714 * 9715 * @return {GetVolumePromise} 9716 */ 9717 9718 }, { 9719 key: "getVolume", 9720 value: function getVolume() { 9721 return this.get('volume'); 9722 } 9723 /** 9724 * A promise to set the volume level of the player. 9725 * 9726 * @promise SetVolumePromise 9727 * @fulfill {number} The volume was set. 9728 * @reject {RangeError} The volume was less than 0 or greater than 1. 9729 */ 9730 9731 /** 9732 * Set the volume of the player on a scale from \`0\` to \`1\`. When set 9733 * via the API, the volume level will not be synchronized to other 9734 * players or stored as the viewer\u2019s preference. 9735 * 9736 * Most mobile devices do not support setting the volume. An error will 9737 * *not* be triggered in that situation. 9738 * 9739 * @param {number} volume 9740 * @return {SetVolumePromise} 9741 */ 9742 9743 }, { 9744 key: "setVolume", 9745 value: function setVolume(volume) { 9746 return this.set('volume', volume); 9747 } 9748 }]); 9749 9750 return Player; 9751}(); // Setup embed only if this is not a node environment 9752 9753 9754if (!isNode) { 9755 screenfull = initializeScreenfull(); 9756 initializeEmbeds(); 9757 resizeEmbeds(); 9758 initAppendVideoMetadata(); 9759} 9760 9761class VimeoPlayer extends AbstractVideoPlayer { 9762 constructor(target, videoId, options = {}) { 9763 super(target, videoId, options); 9764 this.state.set(INITIALIZED); 9765 } 9766 createPlayer(videoId) { 9767 const { options, options: { playerOptions = {} } } = this; 9768 const vimeoOptions = videoId.indexOf("http") === 0 ? { url: videoId } : { id: +videoId }; 9769 const player = new Player$1(this.target, assign(vimeoOptions, { 9770 controls: !options.hideControls, 9771 loop: options.loop, 9772 muted: options.mute 9773 }, playerOptions.vimeo || {})); 9774 player.on("play", this.onPlay); 9775 player.on("pause", this.onPause); 9776 player.on("ended", this.onEnded); 9777 player.ready().then(this.onPlayerReady, this.onError); 9778 if (!player.getMuted()) { 9779 player.setVolume(clamp(options.volume, 0, 1)); 9780 } 9781 return player; 9782 } 9783 playVideo() { 9784 this.player.play().catch(() => { 9785 if (this.state.is(PLAY_REQUEST_ABORTED)) { 9786 this.state.set(IDLE); 9787 } 9788 }); 9789 } 9790 pauseVideo() { 9791 this.player.pause(); 9792 } 9793} 9794 9795const YOUTUBE_API_SRC = "//www.youtube.com/player_api"; 9796class YouTubeIframeAPILoader { 9797 load(callback) { 9798 if (window.YT && isFunction(window.YT.Player)) { 9799 return callback(); 9800 } 9801 this.attachCallback(callback); 9802 if (this.shouldLoad()) { 9803 create("script", { src: \`\${location.protocol}\${YOUTUBE_API_SRC}\` }, document.head); 9804 } 9805 } 9806 shouldLoad() { 9807 return !queryAll(document, "script").some((script) => script.src.replace(/^https?:/, "") === YOUTUBE_API_SRC); 9808 } 9809 attachCallback(callback) { 9810 let oldCallback; 9811 if (!isUndefined(window.onYouTubeIframeAPIReady)) { 9812 oldCallback = window.onYouTubeIframeAPIReady; 9813 } 9814 window.onYouTubeIframeAPIReady = () => { 9815 oldCallback && oldCallback(); 9816 callback(); 9817 }; 9818 } 9819} 9820 9821class YouTubePlayer extends AbstractVideoPlayer { 9822 constructor(target, videoId, options = {}) { 9823 super(target, videoId, options); 9824 this.videoId = this.parseVideoId(videoId); 9825 if (this.videoId) { 9826 this.state.set(INITIALIZING); 9827 new YouTubeIframeAPILoader().load(this.onAPIReady.bind(this)); 9828 } 9829 } 9830 onAPIReady() { 9831 const { state } = this; 9832 const isPending = state.is(PENDING_PLAY); 9833 state.set(INITIALIZED); 9834 if (isPending) { 9835 this.play(); 9836 } 9837 } 9838 createPlayer(videoId) { 9839 const { options, options: { playerOptions = {} } } = this; 9840 return new YT.Player(this.target, { 9841 videoId, 9842 host: options.host, 9843 playerVars: assign({ 9844 controls: options.hideControls ? 0 : 1, 9845 iv_load_policy: 3, 9846 loop: options.loop ? 1 : 0, 9847 playlist: options.loop ? videoId : void 0, 9848 rel: 0, 9849 autoplay: 0, 9850 mute: options.mute ? 1 : 0 9851 }, playerOptions.youtube || {}), 9852 events: { 9853 onReady: this.onPlayerReady.bind(this), 9854 onStateChange: this.onPlayerStateChange.bind(this), 9855 onError: this.onError.bind(this) 9856 } 9857 }); 9858 } 9859 onPlayerReady() { 9860 super.onPlayerReady(); 9861 this.player.setVolume(clamp(this.options.volume, 0, 1) * 100); 9862 } 9863 onPlayerStateChange(e) { 9864 const { PLAYING, PAUSED, ENDED } = YT.PlayerState; 9865 switch (true) { 9866 case e.data === PLAYING: 9867 this.onPlay(); 9868 break; 9869 case e.data === PAUSED: 9870 this.onPause(); 9871 break; 9872 case e.data === ENDED: 9873 this.onEnded(); 9874 break; 9875 } 9876 } 9877 playVideo() { 9878 this.player.playVideo(); 9879 } 9880 pauseVideo() { 9881 this.player.pauseVideo(); 9882 } 9883 parseVideoId(id) { 9884 return id.indexOf("http") === 0 ? this.parseUrl(id) : id; 9885 } 9886 parseUrl(url) { 9887 const [, search] = url.split(/[#?]/); 9888 const query = find(search.split("&"), (query2) => query2.indexOf("v=") === 0); 9889 return query && query.replace("v=", ""); 9890 } 9891} 9892 9893const I18N = { 9894 playVideo: "Play Video" 9895}; 9896 9897class PlayerUI { 9898 constructor(Splide2, slide) { 9899 this.event = EventInterface(); 9900 this.Splide = Splide2; 9901 this.slide = slide; 9902 this.container = child(this.slide, \`.\${CLASS_CONTAINER}\`); 9903 this.parent = this.container || this.slide; 9904 this.init(); 9905 this.create(); 9906 this.show(); 9907 this.listen(); 9908 } 9909 init() { 9910 addClass(this.slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`); 9911 addClass(this.container, \`\${CLASS_CONTAINER}\${MODIFIER_HAS_VIDEO}\`); 9912 } 9913 create() { 9914 this.video = create("div", CLASS_VIDEO, this.parent); 9915 this.playButton = create("button", { 9916 class: CLASS_VIDEO_PLAY_BUTTON, 9917 type: "button", 9918 "aria-label": this.Splide.options.i18n.playVideo || I18N.playVideo 9919 }, this.video); 9920 this.wrapper = create("div", CLASS_VIDEO_WRAPPER, this.video); 9921 this.placeholder = create("div", null, this.wrapper); 9922 } 9923 listen() { 9924 this.parent.addEventListener("click", () => { 9925 this.event.emit("click"); 9926 }); 9927 } 9928 toggleButton(show) { 9929 display(this.playButton, show ? "" : "none"); 9930 } 9931 toggleWrapper(show) { 9932 display(this.wrapper, show ? "" : "none"); 9933 } 9934 getPlaceholder() { 9935 return this.placeholder; 9936 } 9937 hide() { 9938 this.toggleButton(false); 9939 this.toggleWrapper(true); 9940 } 9941 show() { 9942 if (!this.disabled) { 9943 this.toggleButton(true); 9944 } 9945 this.toggleWrapper(false); 9946 } 9947 disable(disabled) { 9948 this.disabled = disabled; 9949 if (disabled) { 9950 this.toggleButton(false); 9951 } 9952 } 9953 on(events, callback) { 9954 this.event.on(events, callback); 9955 } 9956 destroy() { 9957 removeClass(this.slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`); 9958 removeClass(this.container, \`\${CLASS_CONTAINER}\${MODIFIER_HAS_VIDEO}\`); 9959 remove(this.video); 9960 this.event.destroy(); 9961 } 9962} 9963 9964const VIDEO_PLAYER_MAP = [ 9965 [YOUTUBE_DATA_ATTRIBUTE, YouTubePlayer], 9966 [VIMEO_DATA_ATTRIBUTE, VimeoPlayer], 9967 [HTML_VIDEO__DATA_ATTRIBUTE, HTMLVideoPlayer] 9968]; 9969class Player { 9970 constructor(Splide2, slide) { 9971 this.Splide = Splide2; 9972 this.slide = slide; 9973 this.event = EventInterface(Splide2); 9974 this.options = merge(merge({}, DEFAULTS), this.Splide.options.video); 9975 this.createPlayer(slide); 9976 if (this.player) { 9977 this.listen(); 9978 } 9979 } 9980 createPlayer(slide) { 9981 VIDEO_PLAYER_MAP.forEach(([attr, Constructor]) => { 9982 const id = getAttribute(slide, attr); 9983 if (id) { 9984 this.ui = new PlayerUI(this.Splide, slide); 9985 this.player = new Constructor(this.ui.getPlaceholder(), id, this.options); 9986 this.ui.disable(this.options.disableOverlayUI); 9987 } 9988 }); 9989 } 9990 listen() { 9991 const { player, event } = this; 9992 this.ui.on("click", this.onClick.bind(this)); 9993 player.on("play", this.onPlay.bind(this)); 9994 player.on("played", this.onPlayed.bind(this)); 9995 player.on("pause", this.onPause.bind(this)); 9996 player.on("paused", this.onPaused.bind(this)); 9997 player.on("ended", this.onEnded.bind(this)); 9998 player.on("error", this.onError.bind(this)); 9999 event.on([EVENT_MOVE, EVENT_SCROLL], this.pause.bind(this)); 10000 event.on(EVENT_VIDEO_CLICK, this.onVideoClick.bind(this)); 10001 event.on(EVENT_DRAG, () => { 10002 event.off(EVENT_DRAGGING); 10003 event.on(EVENT_DRAGGING, () => { 10004 this.pause(); 10005 event.off(EVENT_DRAGGING); 10006 }); 10007 }); 10008 if (this.options.autoplay) { 10009 event.on([EVENT_MOUNTED, EVENT_MOVED, EVENT_SCROLLED], this.onAutoplayRequested.bind(this)); 10010 } 10011 } 10012 onClick() { 10013 this.isPaused() ? this.play() : this.pause(); 10014 this.event.emit(EVENT_VIDEO_CLICK, this); 10015 } 10016 onVideoClick(player) { 10017 if (this !== player) { 10018 this.pause(); 10019 } 10020 } 10021 onPlay() { 10022 this.ui.hide(); 10023 } 10024 onPlayed() { 10025 this.ui.hide(); 10026 this.togglePlaying(true); 10027 this.event.emit(EVENT_VIDEO_PLAY, this); 10028 } 10029 onPause() { 10030 this.ui.show(); 10031 } 10032 onPaused() { 10033 this.togglePlaying(false); 10034 this.event.emit(EVENT_VIDEO_PAUSE, this); 10035 } 10036 onEnded() { 10037 this.togglePlaying(false); 10038 this.event.emit(EVENT_VIDEO_ENDED, this); 10039 } 10040 onError() { 10041 addClass(this.slide, CLASS_ERROR); 10042 this.ui.show(); 10043 this.event.emit(EVENT_VIDEO_ERROR, this); 10044 } 10045 onAutoplayRequested() { 10046 const activeSlide = this.Splide.Components.Slides.getAt(this.Splide.index); 10047 if (activeSlide.slide === this.slide) { 10048 this.play(); 10049 } 10050 } 10051 togglePlaying(add) { 10052 toggleClass(this.Splide.root, CLASS_PLAYING, add); 10053 } 10054 play() { 10055 if (this.player && !this.disabled) { 10056 this.player.play(); 10057 } 10058 } 10059 pause() { 10060 if (this.player && !this.disabled) { 10061 this.player.pause(); 10062 } 10063 } 10064 destroy() { 10065 if (this.player) { 10066 this.ui.destroy(); 10067 this.player.destroy(); 10068 } 10069 this.disable(false); 10070 } 10071 disable(disabled) { 10072 this.disabled = disabled; 10073 toggleClass(this.Splide.root, CLASS_VIDEO_DISABLED, disabled); 10074 } 10075 isPaused() { 10076 return this.player.isPaused(); 10077 } 10078} 10079 10080function Video(Splide2, Components2) { 10081 const { on } = EventInterface(Splide2); 10082 const { Slides } = Components2; 10083 const players = {}; 10084 function mount() { 10085 create(); 10086 on("refresh", create); 10087 } 10088 function create() { 10089 Slides.forEach((Slide) => { 10090 const { slide } = Slide; 10091 if (!hasClass(slide, \`\${CLASS_SLIDE}\${MODIFIER_HAS_VIDEO}\`)) { 10092 players[Slide.index] = new Player(Splide2, slide); 10093 } 10094 }); 10095 Slides.update(); 10096 } 10097 function destroy() { 10098 forOwn(players, (player) => { 10099 player.destroy(); 10100 }); 10101 } 10102 function play(index = Splide2.index) { 10103 const player = players[index]; 10104 if (player) { 10105 player.play(); 10106 } 10107 } 10108 function pause() { 10109 forOwn(players, (player) => { 10110 player.pause(); 10111 }); 10112 } 10113 function disable(disabled) { 10114 forOwn(players, (player) => { 10115 player.disable(disabled); 10116 }); 10117 } 10118 return { 10119 mount, 10120 destroy, 10121 play, 10122 pause, 10123 disable 10124 }; 10125} 10126 10127 10128 10129/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(55), __webpack_require__(87).setImmediate)) 10130//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tdmlkZW8vZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLXZpZGVvLmVzbS5qcz9mZDcxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0F
10130BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDhCQUE4QiwwQ0FBMEM7QUFDeEUsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLE1BQU07QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxvQkFBb0IsYUFBYSxJQUFJLFFBQVE7QUFDN0M7O0FBRUEsT0FBTyw2QkFBNkI7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0IsWUFBWTtBQUMzQyxtQ0FBbUMsWUFBWTtBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RCxvQ0FBb0MsZUFBZTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLCtCQUErQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0F
10130BRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrQkFBa0IsWUFBWSxFQUFFO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGNBQWM7O0FBRWpCO0FBQ0EsNEJBQTRCLFNBQVM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjs7O0FBR3BCO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixrQkFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7QUFDQSxTQUFTOztBQUVULHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNELENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsaUNBQWlDLG9DQUFvQyxFQUFFO0FBQ2xGO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsWUFBWSxRQUFRO0FBQ3BCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLF
10130dBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWSxTQUFTO0FBQ3JCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFdBQVcsWUFBWTtBQUN2QixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxnQkFBZ0I7QUFDM0IsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUssWUFBWTtBQUNqQjtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixXQUFXLE9BQU8sYUFBYTtBQUMvQixZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsWUFBWTtBQUN2QixZQUFZLGtCQUFrQjtBQUM5Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFlBQVk7QUFDdkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkIsWUFBWTtBQUNaOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDLDhCQUE4Qjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLE9BQU87QUFDakI7O0FBRUE7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4Q0FBOEM7QUFDM0Q7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYztBQUNkO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtB
10130QUssRUFBRTs7QUFFUDtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPLFNBQVM7QUFDN0IsY0FBYztBQUNkOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLFlBQVk7QUFDM0IsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwwRUFBMEU7QUFDMUU7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxTQUFTO0FBQ3hCLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0ZBQW9GOztBQUVwRjtBQUNBLDhFQUE4RTtBQUM5RTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsVUFBVTtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxQkFBcUI7QUFDcEMsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQSxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLGdCQUFnQjtBQUNoQztBQUNBLGdCQUFnQixpQkFBaUI7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGVBQWU7QUFDaEMsZ0JBQWdCLDBCQUEwQjtBQUMxQztBQUNBLGdCQUFnQixrQkFBa0I7QUFDbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLEtBQUs7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLF
10130dBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUTtBQUN6QixnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekIsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsV0FBVztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQjtBQUNoQyxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsa0JBQWtCLE9BQU87QUFDekIsa0JBQWtCLE9BQU87QUFDekIsa0JBQWtCLE9BQU87QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZUFBZTtBQUNoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdUJBQXVCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGdCQUFnQixVQUFVO0FBQzFCLGdCQUFnQixjQUFjO0FBQzlCO0FBQ0EsZ0JBQWdCLG1CQUFtQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCLGtCQUFrQixPQUFPO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGdCQUFnQjtBQUNqQyxnQkFBZ0IsaUJBQWlCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QixnQkFBZ0IsV0FBVztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE1BQU07QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixPQUFPO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLGFBQWE7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEIsZ0JBQWdCLFdBQVc7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RCwwREFBMEQsZUFBZSxJQUFJO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSywyQkFBMkI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtB
10130QUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsU0FBUyxrQkFBa0IsRUFBRSxnQkFBZ0IsR0FBRztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvQkFBb0IsbUJBQW1CLEVBQUUsRUFBRTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyw2QkFBNkI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsZ0JBQWdCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFlBQVksRUFBRSxtQkFBbUI7QUFDN0QsZ0NBQWdDLGdCQUFnQixFQUFFLG1CQUFtQjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLFlBQVksRUFBRSxtQkFBbUI7QUFDaEUsbUNBQW1DLGdCQUFnQixFQUFFLG1CQUFtQjtBQUN4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsS0FBSztBQUNkLFNBQVMsU0FBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQiw4QkFBOEIsWUFBWSxFQUFFLG1CQUFtQjtBQUMvRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVpQiIsImZpbGUiOiIxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIFNwbGlkZS5qc1xuICogVmVyc2lvbiAgOiAwLjguMFxuICogTGljZW5zZSAgOiBNSVRcbiAqIENvcHlyaWdodDogMjAyMiBOYW90b3NoaSBGdWppdGFcbiAqL1xuZnVuY3Rpb24gZW1wdHkoYXJyYXkpIHtcbiAgYXJyYXkubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2xpY2UkMShhcnJheUxpa2UsIHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycmF5TGlrZSwgc3RhcnQsIGVuZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5JDEoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UkMShhcmd1bWVudHMsIDEpKSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZiQxKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG52YXIgaXNBcnJheSQxID0gQXJyYXkuaXNBcnJheTtcbmFwcGx5JDEodHlwZU9mJDEsIFwiZnVuY3Rpb25cIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInN0cmluZ1wiKTtcbmFwcGx5JDEodHlwZU9mJDEsIFwidW5kZWZpbmVkXCIpO1xuXG5mdW5jdGlvbiB0b0FycmF5JDEodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkkMSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2gkMSh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkkMSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgcmV0dXJuIGFycmF5LmluZGV4T2YodmFsdWUpID4gLTE7XG59XG5cbnZhciBvd25LZXlzJDEgPSBPYmplY3Qua2V5cztcblxuZnVuY3Rpb24gZm9yT3duJDEob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gb3duS2V5cyQxKG9iamVjdCk7XG4gICAga2V5cyA9IHJpZ2h0ID8ga2V5cy5yZXZlcnNlKCkgOiBrZXlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2Y
10130XIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKGtleSAhPT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgICBpZiAoaXRlcmF0ZWUob2JqZWN0W2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24kMShvYmplY3QpIHtcbiAgc2xpY2UkMShhcmd1bWVudHMsIDEpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGZvck93biQxKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG52YXIgUFJPSkVDVF9DT0RFJDEgPSBcInNwbGlkZVwiO1xuXG5mdW5jdGlvbiBFdmVudEJpbmRlcigpIHtcbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGJpbmQodGFyZ2V0cywgZXZlbnRzLCBjYWxsYmFjaywgb3B0aW9ucykge1xuICAgIGZvckVhY2hFdmVudCh0YXJnZXRzLCBldmVudHMsIGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UpIHtcbiAgICAgIHZhciBpc0V2ZW50VGFyZ2V0ID0gKFwiYWRkRXZlbnRMaXN0ZW5lclwiIGluIHRhcmdldCk7XG4gICAgICB2YXIgcmVtb3ZlciA9IGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRhcmdldCwgZXZlbnQsIGNhbGxiYWNrLCBvcHRpb25zKSA6IHRhcmdldFtcInJlbW92ZUxpc3RlbmVyXCJdLmJpbmQodGFyZ2V0LCBjYWxsYmFjayk7XG4gICAgICBpc0V2ZW50VGFyZ2V0ID8gdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrLCBvcHRpb25zKSA6IHRhcmdldFtcImFkZExpc3RlbmVyXCJdKGNhbGxiYWNrKTtcbiAgICAgIGxpc3RlbmVycy5wdXNoKFt0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UsIGNhbGxiYWNrLCByZW1vdmVyXSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB1bmJpbmQodGFyZ2V0cywgZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIGZvckVhY2hFdmVudCh0YXJnZXRzLCBldmVudHMsIGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50LCBuYW1lc3BhY2UpIHtcbiAgICAgIGxpc3RlbmVycyA9IGxpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgIGlmIChsaXN0ZW5lclswXSA9PT0gdGFyZ2V0ICYmIGxpc3RlbmVyWzFdID09PSBldmVudCAmJiBsaXN0ZW5lclsyXSA9PT0gbmFtZXNwYWNlICYmICghY2FsbGJhY2sgfHwgbGlzdGVuZXJbM10gPT09IGNhbGxiYWNrKSkge1xuICAgICAgICAgIGxpc3RlbmVyWzRdKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKHRhcmdldCwgdHlwZSwgZGV0YWlsKSB7XG4gICAgdmFyIGU7XG4gICAgdmFyIGJ1YmJsZXMgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBlID0gbmV3IEN1c3RvbUV2ZW50KHR5cGUsIHtcbiAgICAgICAgYnViYmxlczogYnViYmxlcyxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtcbiAgICAgIGUuaW5pdEN1c3RvbUV2ZW50KHR5cGUsIGJ1YmJsZXMsIGZhbHNlLCBkZXRhaWwpO1xuICAgIH1cblxuICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGUpO1xuICAgIHJldHVybiBlO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgaXRlcmF0ZWUpIHtcbiAgICBmb3JFYWNoJDEodGFyZ2V0cywgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdGFyZ2V0ICYmIGZvckVhY2gkMShldmVudHMsIGZ1bmN0aW9uIChldmVudHMyKSB7XG4gICAgICAgIGV2ZW50czIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TlMpIHtcbiAgICAgICAgICB2Y
10130XIgZnJhZ21lbnQgPSBldmVudE5TLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICBpdGVyYXRlZSh0YXJnZXQsIGZyYWdtZW50WzBdLCBmcmFnbWVudFsxXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBkYXRhWzRdKCk7XG4gICAgfSk7XG4gICAgZW1wdHkobGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmluZDogYmluZCxcbiAgICB1bmJpbmQ6IHVuYmluZCxcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgRVZFTlRfTU9VTlRFRCA9IFwibW91bnRlZFwiO1xudmFyIEVWRU5UX01PVkUgPSBcIm1vdmVcIjtcbnZhciBFVkVOVF9NT1ZFRCA9IFwibW92ZWRcIjtcbnZhciBFVkVOVF9EUkFHID0gXCJkcmFnXCI7XG52YXIgRVZFTlRfRFJBR0dJTkcgPSBcImRyYWdnaW5nXCI7XG52YXIgRVZFTlRfU0NST0xMID0gXCJzY3JvbGxcIjtcbnZhciBFVkVOVF9TQ1JPTExFRCA9IFwic2Nyb2xsZWRcIjtcbnZhciBFVkVOVF9ERVNUUk9ZID0gXCJkZXN0cm95XCI7XG5cbmZ1bmN0aW9uIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpIHtcbiAgdmFyIGJ1cyA9IFNwbGlkZTIgPyBTcGxpZGUyLmV2ZW50LmJ1cyA6IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgdmFyIGJpbmRlciA9IEV2ZW50QmluZGVyKCk7XG5cbiAgZnVuY3Rpb24gb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIGJpbmRlci5iaW5kKGJ1cywgdG9BcnJheSQxKGV2ZW50cykuam9pbihcIiBcIiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICBjYWxsYmFjay5hcHBseShjYWxsYmFjaywgaXNBcnJheSQxKGUuZGV0YWlsKSA/IGUuZGV0YWlsIDogW10pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIGJpbmRlci5kaXNwYXRjaChidXMsIGV2ZW50LCBzbGljZSQxKGFyZ3VtZW50cywgMSkpO1xuICB9XG5cbiAgaWYgKFNwbGlkZTIpIHtcbiAgICBTcGxpZGUyLmV2ZW50Lm9uKEVWRU5UX0RFU1RST1ksIGJpbmRlci5kZXN0cm95KTtcbiAgfVxuXG4gIHJldHVybiBhc3NpZ24kMShiaW5kZXIsIHtcbiAgICBidXM6IGJ1cyxcbiAgICBvbjogb24sXG4gICAgb2ZmOiBhcHBseSQxKGJpbmRlci51bmJpbmQsIGJ1cyksXG4gICAgZW1pdDogZW1pdFxuICB9KTtcbn1cblxuZnVuY3Rpb24gU3RhdGUoaW5pdGlhbFN0YXRlKSB7XG4gIHZhciBzdGF0ZSA9IGluaXRpYWxTdGF0ZTtcblxuICBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICBzdGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgZnVuY3Rpb24gaXMoc3RhdGVzKSB7XG4gICAgcmV0dXJuIGluY2x1ZGVzKHRvQXJyYXkkMShzdGF0ZXMpLCBzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNldDogc2V0LFxuICAgIGlzOiBpc1xuICB9O1xufVxudmFyIENMQVNTX1NMSURFID0gUFJPSkVDVF9DT0RFJDEgKyBcIl9fc2xpZGVcIjtcbnZhciBDTEFTU19DT05UQUlORVIgPSBDTEFTU19TTElERSArIFwiX19jb250YWluZXJcIjtcblxuZnVuY3Rpb24gc2xpY2UoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBmaW5kKGFycmF5TGlrZSwgcHJlZGljYXRlKSB7XG4gIHJldHVybiBzbGljZShhcnJheUxpa2UpLmZpbHRlcihwcmVkaWNhdGUpWzBdO1xufVxuXG5mdW5jdGlvbiBhcHBseShmdW5jKSB7XG4gIHJldHVybiBmdW5jLmJpbmQobnVsbCwgLi4uc2xpY2UoYXJndW1lbnRzLCAxKSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZih0eXBlLCBzdWJqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygc3ViamVjdCA9PT0gdHlwZTtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICFpc051bGwoc3ViamVjdCkgJiYgdHlwZU9mKFwib2JqZWN0XCIsIHN1YmplY3QpO1xufVxuY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5jb25zdCBpc0Z1bmN0aW9uID0gYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuY29uc3QgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xuY29uc3QgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIChuYW1lKSA9PiB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgOiBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKGVsbSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxtKSAmJiAoZWxtW1wibXNNYXRjaGVzU2VsZWN0b3JcIl0gfHwgZWxtLm1hdGNoZXMpLmNhbGwoZWxtLCBzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKChjaGlsZCkgPT4gbWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpKSA6IGNoaWxkcmVuMjtcbn1cblxuZnVuY3Rpb24gY2hpbGQocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKVswXSA6IHBhcmVudC5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuY29uc3Qgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGxldCBrZXlzID0gb3duS2V5cyhvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZm9yT3duKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBtZXJnZShvYmplY3QpIHtcbiAgc2xpY2UoYXJndW1lbnRzLCAxKS5mb3JFYWNoKChzb3VyY2UpID0+IHtcbiAgICBmb3JPd24oc291cmNlLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gbWVyZ2Uoe30sIGlzT2JqZWN0KG9iamVjdFtrZXldKSA/IG9iamVjdFtrZXldIDoge30sIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxtcywgYXR0cnMpIHtcbiAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgZm9yRWFjaChhdHRycywgKGF0dHIpID0+IHtcbiAgICAgIGVsbSAmJiBlbG0ucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKGVsbXMsIGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QoYXR0cnMpKSB7XG4gICAgZm9yT3duKGF0dHJzLCAodmFsdWUyLCBuYW1lKSA9PiB7XG4gICAgICBzZXRBdHRyaWJ1dGUoZWxtcywgbmFtZSwgdmFsdWUyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBmb3JFYWNoKGVsbXMsIChlbG0pID0+IHtcbiAgICAgIGlzTnVsbCh2YWx1ZSkgfHwgdmFsdWUgPT09IFwiXCIgPyByZW1vdmVBdHRyaWJ1dGUoZWxtLCBhdHRycykgOiBlbG0uc2V0QXR0cmlidXRlKGF0dHJzLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGUodGFnLCBhdHRycywgcGFyZW50KSB7XG4gIGNvbnN0IGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKGF0dHJzKSB7XG4gICAgaXNTdHJpbmcoYXR0cnMpID8gYWRkQ2xhc3MoZWxtLCBhdHRycykgOiBzZXRBdHRyaWJ1dGUoZWxtLCBhdHRycyk7XG4gIH1cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybi
10130BlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gYCR7dmFsdWV9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaXNwbGF5KGVsbSwgZGlzcGxheTIpIHtcbiAgc3R5bGUoZWxtLCBcImRpc3BsYXlcIiwgZGlzcGxheTIpO1xufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGUoZWxtLCBhdHRyKSB7XG4gIHJldHVybiBlbG0uZ2V0QXR0cmlidXRlKGF0dHIpO1xufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuY29uc3QgUFJPSkVDVF9DT0RFID0gXCJzcGxpZGVcIjtcblxuZnVuY3Rpb24gZXJyb3IobWVzc2FnZSkge1xuICBjb25zb2xlLmVycm9yKGBbJHtQUk9KRUNUX0NPREV9XSAke21lc3NhZ2V9YCk7XG59XG5cbmNvbnN0IHsgbWluLCBtYXgsIGZsb29yLCBjZWlsLCBhYnMgfSA9IE1hdGg7XG5cbmZ1bmN0aW9uIGNsYW1wKG51bWJlciwgeCwgeSkge1xuICBjb25zdCBtaW5pbXVtID0gbWluKHgsIHkpO1xuICBjb25zdCBtYXhpbXVtID0gbWF4KHgsIHkpO1xuICByZXR1cm4gbWluKG1heChtaW5pbXVtLCBudW1iZXIpLCBtYXhpbXVtKTtcbn1cblxuY29uc3QgQ0xBU1NfVklERU8gPSBcInNwbGlkZV9fdmlkZW9cIjtcbmNvbnN0IENMQVNTX1ZJREVPX1dSQVBQRVIgPSBgJHtDTEFTU19WSURFT31fX3dyYXBwZXJgO1xuY29uc3QgQ0xBU1NfVklERU9fUExBWV9CVVRUT04gPSBgJHtDTEFTU19WSURFT31fX3BsYXlgO1xuY29uc3QgQ0xBU1NfUExBWUlORyA9IFwiaXMtcGxheWluZ1wiO1xuY29uc3QgQ0xBU1NfRVJST1IgPSBcImlzLWVycm9yXCI7XG5jb25zdCBDTEFTU19WSURFT19ESVNBQkxFRCA9IFwiaXMtdmlkZW8tZGlzYWJsZWRcIjtcbmNvbnN0IE1PRElGSUVSX0hBU19WSURFTyA9IFwiLS1oYXMtdmlkZW9cIjtcblxuY29uc3QgWU9VVFVCRV9EQVRBX0FUVFJJQlVURSA9IFwiZGF0YS1zcGxpZGUteW91dHViZVwiO1xuY29uc3QgVklNRU9fREFUQV9BVFRSSUJVVEUgPSBcImRhdGEtc3BsaWRlLXZpbWVvXCI7XG5jb25zdCBIVE1MX1ZJREVPX19EQVRBX0FUVFJJQlVURSA9IFwiZGF0YS1zcGxpZGUtaHRtbC12aWRlb1wiO1xuXG5jb25zdCBERUZBVUxUUyA9IHtcbiAgaGlkZUNvbnRyb2xzOiBmYWxzZSxcbiAgbG9vcDogZmFsc2UsXG4gIG11dGU6IGZhbHNlLFxuICB2b2x1bWU6IDAuMlxufTtcblxuY29uc3QgRVZFTlRfVklERU9fUExBWSA9IFwidmlkZW86cGxheVwiO1xuY29uc3QgRVZFTlRfVklERU9fUEFVU0UgPSBcInZpZGVvOnBhdXNlXCI7XG5jb25zdCBFVkVOVF9WSURFT19FTkRFRCA9IFwidmlkZW86ZW5kZWRcIjtcbmNvbnN0IEVWRU5UX1ZJREVPX0VSUk9SID0gXCJ2aWRlbzplcnJvclwiO1xuY29uc3QgRVZFTlRfVklERU9fQ0xJQ0sgPSBcInZpZGVvOmNsaWNrXCI7XG5cbmNvbnN0IE5PVF9JTklUSUFMSVpFRCA9IDE7XG5jb25zdCBJTklUSUFMSVpJTkcgPSAyO1xuY29uc3QgSU5JVElBTElaRUQgPSAzO1xuY29uc3QgUEVORElOR19QTEFZID0gNDtcbmNvbnN0IElETEUgPSA1O1xuY29uc3QgTE9BRElORyA9IDY7XG5jb25zdCBQTEFZX1JFUVVFU1RfQUJPUlRFRCA9IDc7XG5jb25zdCBQTEFZSU5HID0gODtcbmNvbnN0IEVSUk9SID0gOTtcblxuY2xhc3MgQWJzdHJhY3RWaWRlb1BsYXllciB7XG4gIGNvbnN0cnVjdG9yKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucykge1xuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZShOT1RfSU5JVElBTElaRUQpO1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZSgpO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMudmlkZW9JZCA9IHZpZGVvSWQ7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLm9uUGxheSA9IHRoaXMub25QbGF5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblBhdXNlID0gdGhpcy5vblBhdXNlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkVuZGVkID0gdGhpcy5vbkVuZGVkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5vblBsYXllclJlYWR5ID0gdGhpcy5vblBsYXllclJlYWR5LmJpbmQodGhpcyk7XG4gICAgdGhpcy5vbkVycm9yID0gdGhpcy5vbkVycm9yLmJpbmQodGhpcyk7XG4gIH1cbiAgb24oZXZlbnRzLCBjYWxsYmFjaykge1xuICAgIHRoaXMuZXZlbnQub24oZXZlbnRzLCBjYWxsYmFjayk7XG4gIH1cbiAgcGxheSgpIHtcbiAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzO1xuICAgIGlmIChzdGF0ZS5pcyhFUlJPUikpIHtcbiAgICAgIGVycm9yKFwiQ2FuIG5vdCBwbGF5IHRoaXMgdmlkZW8uXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50LmVtaXQoXCJwbGF5XCIpO1xuICAgIGlmIChzdGF0ZS5pcyhJTklUSUFMSVpJTkcpKSB7XG4gICAgICByZXR1cm4gc3RhdGUuc2V0KFBFTkRJTkdfUExBWSk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5pcyhJTklUSUFMSVpFRCkpIHtcbiAgICAgIHRoaXMucGxheWVyID0gdGhpcy5jcmVhdGVQbGF5ZXIodGhpcy52aWRlb0lkKTtcbiAgICAgIHJldHVybiBzdGF0ZS5zZXQoUEVORElOR19QTEFZKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLmlzKFtQRU5ESU5HX1BMQVksIFBMQVlJTkddKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoSURMRSkpIHtcbiAgICAgIHN0YXRlLnNldChMT0FESU5HKTtcbiAgICAgIHRoaXMucGxheVZpZGVvKCk7XG4gICAgfVxuICB9XG4gI
10130HBhdXNlKCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgaWYgKHN0YXRlLmlzKEVSUk9SKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50LmVtaXQoXCJwYXVzZVwiKTtcbiAgICBpZiAoc3RhdGUuaXMoUEVORElOR19QTEFZKSkge1xuICAgICAgcmV0dXJuIHN0YXRlLnNldChJTklUSUFMSVpJTkcpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoTE9BRElORykpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5zZXQoUExBWV9SRVFVRVNUX0FCT1JURUQpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXMoUExBWUlORykpIHtcbiAgICAgIHRoaXMucGF1c2VWaWRlbygpO1xuICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgfVxuICB9XG4gIGlzUGF1c2VkKCkge1xuICAgIHJldHVybiAhdGhpcy5zdGF0ZS5pcyhQTEFZSU5HKTtcbiAgfVxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZXZlbnQuZGVzdHJveSgpO1xuICB9XG4gIG9uUGxheWVyUmVhZHkoKSB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcztcbiAgICBjb25zdCBpc1BlbmRpbmcgPSBzdGF0ZS5pcyhQRU5ESU5HX1BMQVkpO1xuICAgIHN0YXRlLnNldChJRExFKTtcbiAgICBpZiAoaXNQZW5kaW5nKSB7XG4gICAgICB0aGlzLnBsYXkoKTtcbiAgICB9XG4gIH1cbiAgb25QbGF5KCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgYWJvcnRlZCA9IHN0YXRlLmlzKFBMQVlfUkVRVUVTVF9BQk9SVEVEKTtcbiAgICBzdGF0ZS5zZXQoUExBWUlORyk7XG4gICAgaWYgKGFib3J0ZWQpIHtcbiAgICAgIHRoaXMucGF1c2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ldmVudC5lbWl0KFwicGxheWVkXCIpO1xuICAgIH1cbiAgfVxuICBvblBhdXNlKCkge1xuICAgIHRoaXMuc3RhdGUuc2V0KElETEUpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcInBhdXNlZFwiKTtcbiAgfVxuICBvbkVuZGVkKCkge1xuICAgIHRoaXMuc3RhdGUuc2V0KElETEUpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcImVuZGVkXCIpO1xuICB9XG4gIG9uRXJyb3IoKSB7XG4gICAgdGhpcy5zdGF0ZS5zZXQoRVJST1IpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChcImVycm9yXCIpO1xuICB9XG59XG5cbmNsYXNzIEhUTUxWaWRlb1BsYXllciBleHRlbmRzIEFic3RyYWN0VmlkZW9QbGF5ZXIge1xuICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICB9XG4gIGNyZWF0ZVBsYXllcih2aWRlb0lkKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCBvcHRpb25zOiB7IHBsYXllck9wdGlvbnMgPSB7fSB9IH0gPSB0aGlzO1xuICAgIGNvbnN0IHBsYXllciA9IGNyZWF0ZShcInZpZGVvXCIsIHsgc3JjOiB2aWRlb0lkIH0sIHRoaXMudGFyZ2V0KTtcbiAgICBjb25zdCBvbiA9IHBsYXllci5hZGRFdmVudExpc3RlbmVyLmJpbmQocGxheWVyKTtcbiAgICBhc3NpZ24ocGxheWVyLCB7XG4gICAgICBjb250cm9sczogIW9wdGlvbnMuaGlkZUNvbnRyb2xzLFxuICAgICAgbG9vcDogb3B0aW9ucy5sb29wLFxuICAgICAgdm9sdW1lOiBjbGFtcChvcHRpb25zLnZvbHVtZSwgMCwgMSksXG4gICAgICBtdXRlZDogb3B0aW9ucy5tdXRlXG4gICAgfSwgcGxheWVyT3B0aW9ucy5odG
101301sVmlkZW8gfHwge30pO1xuICAgIG9uKFwicGxheVwiLCB0aGlzLm9uUGxheSk7XG4gICAgb24oXCJwYXVzZVwiLCB0aGlzLm9uUGF1c2UpO1xuICAgIG9uKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBvbihcImxvYWRlZGRhdGFcIiwgdGhpcy5vblBsYXllclJlYWR5KTtcbiAgICBvbihcImVycm9yXCIsIHRoaXMub25FcnJvcik7XG4gICAgcmV0dXJuIHBsYXllcjtcbiAgfVxuICBwbGF5VmlkZW8oKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICBwcm9taXNlICYmIHByb21pc2UuY2F0Y2godGhpcy5vbkVycm9yLmJpbmQodGhpcykpO1xuICB9XG4gIHBhdXNlVmlkZW8oKSB7XG4gICAgdGhpcy5wbGF5ZXIucGF1c2UoKTtcbiAgfVxuICBvbkVycm9yKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzKFBMQVlfUkVRVUVTVF9BQk9SVEVEKSkge1xuICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLm9uRXJyb3IoKTtcbiAgICB9XG4gIH1cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgY29uc3QgeyBwbGF5ZXIgfSA9IHRoaXM7XG4gICAgY29uc3Qgb2ZmID0gcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIuYmluZChwbGF5ZXIpO1xuICAgIG9mZihcInBsYXlcIiwgdGhpcy5vblBsYXkpO1xuICAgIG9mZihcInBhdXNlXCIsIHRoaXMub25QYXVzZSk7XG4gICAgb2ZmKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBvZmYoXCJsb2FkZWRkYXRhXCIsIHRoaXMub25QbGF5ZXJSZWFkeSk7XG4gIH1cbn1cblxuLyohIEB2aW1lby9wbGF5ZXIgdjIuMTcuMSB8IChjKSAyMDIyIFZpbWVvIHwgTUlUIExpY2Vuc2UgfCBodHRwczovL2dpdGh1Yi5jb20vdmltZW8vcGxheWVyLmpzICovXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5cbi8qKlxuICogQG1vZHVsZSBsaWIvZnVuY3Rpb25zXG4gKi9cblxuLyoqXG4gKiBDaGVjayB0byBzZWUgdGhpcyBpcyBhIG5vZGUgZW52aXJvbm1lbnQuXG4gKiBAdHlwZSB7Qm9vbGVhbn1cbiAqL1xuXG4vKiBnbG9iYWwgZ2xvYmFsICovXG52YXIgaXNOb2RlID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYge30udG9TdHJpbmcuY2FsbChnbG9iYWwpID09PSAnW29iamVjdCBnbG9iYWxdJztcbi8qKlxuICogR2V0IHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgZm9yIGEgZ2l2ZW4gZ2V0dGVyIG9yIHNldHRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBFaXRoZXIg4oCcZ2V04oCdIG9yIOKAnHNldOKAnS5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBnZXRNZXRob2ROYW1lKHByb3AsIHR5cGUpIHtcbiAgaWYgKHByb3AuaW5kZXhPZih0eXBlLnRvTG93ZXJDYXNlKCkpID09PSAwKSB7XG4gICAgcmV0dXJuIHByb3A7XG4gIH1cblxuICByZXR1cm4gXCJcIi5jb25jYXQodHlwZS50b0xvd2VyQ2FzZSgpKS5jb25jYXQocHJvcC5zdWJzdHIoMCwgMSkudG9VcHBlckNhc2UoKSkuY29uY2F0KHByb3Auc3Vic3RyKDEpKTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgaXMgYSBET00gRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IGVsZW1lbnQgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNEb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIEJvb2xlYW4oZWxlbWVudCAmJiBlbGVtZW50Lm5vZGVUeXBlID09PSAxICYmICdub2RlTmFtZScgaW4gZWxlbWVudCAmJiBlbGVtZW50Lm93bmVyRG9jdW1lbnQgJiYgZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLlxuICpcbiAqIEBzZWUgaHR0cDovL2RsLmRyb3Bib3h1c2VyY29udGVudC5jb20vdS8zNTE0Ni9qcy90ZXN0cy9pc051bWJlci5odG1sXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW50ZWdlciBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlci5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KHZhbHVlKSkgJiYgaXNGaW5pdGUodmFsdWUpICYmIE1hdGguZmxvb3IodmFsdWUpID09IHZhbHVlO1xufVxuLyoqXG4gKiBDaGVjayB0byBzZWUgaWYgdGhlIFVSTCBpcyBhIFZpbWVvIHVybC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJ
10130sIFRoZSB1cmwgc3RyaW5nLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuXG5mdW5jdGlvbiBpc1ZpbWVvVXJsKHVybCkge1xuICByZXR1cm4gL14oaHR0cHM/Oik/XFwvXFwvKChwbGF5ZXJ8d3d3KVxcLik/dmltZW9cXC5jb20oPz0kfFxcLykvLnRlc3QodXJsKTtcbn1cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBVUkwgaXMgZm9yIGEgVmltZW8gZW1iZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgdXJsIHN0cmluZy5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaXNWaW1lb0VtYmVkKHVybCkge1xuICB2YXIgZXhwciA9IC9eaHR0cHM6XFwvXFwvcGxheWVyXFwudmltZW9cXC5jb21cXC92aWRlb1xcL1xcZCsvO1xuICByZXR1cm4gZXhwci50ZXN0KHVybCk7XG59XG4vKipcbiAqIEdldCB0aGUgVmltZW8gVVJMIGZyb20gYW4gZWxlbWVudC5cbiAqIFRoZSBlbGVtZW50IG11c3QgaGF2ZSBlaXRoZXIgYSBkYXRhLXZpbWVvLWlkIG9yIGRhdGEtdmltZW8tdXJsIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb0VtYmVkUGFyYW1ldGVycyBUaGUgb0VtYmVkIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZ2V0VmltZW9VcmwoKSB7XG4gIHZhciBvRW1iZWRQYXJhbWV0ZXJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgdmFyIGlkID0gb0VtYmVkUGFyYW1ldGVycy5pZDtcbiAgdmFyIHVybCA9IG9FbWJlZFBhcmFtZXRlcnMudXJsO1xuICB2YXIgaWRPclVybCA9IGlkIHx8IHVybDtcblxuICBpZiAoIWlkT3JVcmwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIGlkIG9yIHVybCBtdXN0IGJlIHBhc3NlZCwgZWl0aGVyIGluIGFuIG9wdGlvbnMgb2JqZWN0IG9yIGFzIGEgZGF0YS12aW1lby1pZCBvciBkYXRhLXZpbWVvLXVybCBhdHRyaWJ1dGUuJyk7XG4gIH1cblxuICBpZiAoaXNJbnRlZ2VyKGlkT3JVcmwpKSB7XG4gICAgcmV0dXJuIFwiaHR0cHM6Ly92aW1lby5jb20vXCIuY29uY2F0KGlkT3JVcmwpO1xuICB9XG5cbiAgaWYgKGlzVmltZW9VcmwoaWRPclVybCkpIHtcbiAgICByZXR1cm4gaWRPclVybC5yZXBsYWNlKCdodHRwOicsICdodHRwczonKTtcbiAgfVxuXG4gIGlmIChpZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KGlkLCBcIlxcdTIwMUQgaXMgbm90IGEgdmFsaWQgdmlkZW8gaWQuXCIpKTtcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KGlkT3JVcmwsIFwiXFx1MjAxRCBpcyBub3QgYSB2aW1lby5jb20gdXJsLlwiKSk7XG59XG5cbnZhciBhcnJheUluZGV4T2ZTdXBwb3J0ID0gdHlwZW9mIEFycmF5LnByb3RvdHlwZS5pbmRleE9mICE9PSAndW5kZWZpbmVkJztcbnZhciBwb3N0TWVzc2FnZVN1cHBvcnQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LnBvc3RNZXNzYWdlICE9PSAndW5kZWZpbmVkJztcblxuaWYgKCFpc05vZGUgJiYgKCFhcnJheUluZGV4T2ZTdXBwb3J0IHx8ICFwb3N0TWVzc2FnZVN1cHBvcnQpKSB7XG4gIHRocm93IG5ldyBFcnJvcignU29ycnksIHRoZSBWaW1lbyBQbGF5ZXIgQVBJIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBicm93c2VyLicpO1xufVxuXG52YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uanNNb2R1bGUoZm4sIG1vZHVsZSkge1xuXHRyZXR1cm4gbW9kdWxlID0geyBleHBvcnRzOiB7fSB9LCBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8qIVxuICogd2Vha21hcC1wb2x5ZmlsbCB2Mi4wLjQgLSBFQ01BU2NyaXB0NiBXZWFrTWFwIHBvbHlmaWxsXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcG9seWdvbnBsYW5ldC93ZWFrbWFwLXBvbHlmaWxsXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSBwb2x5Z29ucGxhbmV0IDxwb2x5Z29uLnBsYW5ldC5hcXVhQGdtYWlsLmNvbT5cbiAqIEBsaWNlbnNlIE1JVFxuICovXG4oZnVuY3Rpb24gKHNlbGYpIHtcblxuICBpZiAoc2VsZi5XZWFrTWFwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuICB2YXIgaGFzRGVmaW5lID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXZvaWQgSUU4J3MgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eVxuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7XG4gICAgICAgIHZhbHVlOiAxXG4gICAgICB9KS54ID09PSAxO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH0oKTtcblxuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCB2YWx1ZSkge1xuICAgIGlmIChoYXNEZWZpbmUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHNlbGYuV2Vha01hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBFQ01BLTI2MiAyMy4zIFdlYWtNYXAgT2JqZWN0c1xuICAgIGZ1bmN0aW9uIFdlYWtNYXAoKSB7XG4gICAgICBpZiAodGhpcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb25zdHJ1Y3RvciBXZWFrTWFwIHJlcXVpcmVzICduZXcnXCIpO1xuICAgICAgfVxuXG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX2lkJywgZ2VuSWQoJ19XZWFrTWFwJykpOyAvLyBFQ01BLTI2MiAyMy4zLjEuMSBXZWFrTWFwKFtpdGVyYWJsZV0pXG5cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBDdXJyZW50bHksIFdlYWtNYXAgYGl0ZXJhYmxlYCBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkXG4gICAgICAgI
10130HRocm93IG5ldyBUeXBlRXJyb3IoJ1dlYWtNYXAgaXRlcmFibGUgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgfVxuICAgIH0gLy8gRUNNQS0yNjIgMjMuMy4zLjIgV2Vha01hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcblxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdkZWxldGUnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgZGVsZXRlIGtleVt0aGlzLl9pZF07XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7IC8vIEVDTUEtMjYyIDIzLjMuMy4zIFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpXG5cbiAgICBkZWZpbmVQcm9wZXJ0eShXZWFrTWFwLnByb3RvdHlwZSwgJ2dldCcsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGNoZWNrSW5zdGFuY2UodGhpcywgJ2dldCcpO1xuXG4gICAgICBpZiAoIWlzT2JqZWN0KGtleSkpIHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5WzFdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH0pOyAvLyBFQ01BLTI2MiAyMy4zLjMuNCBXZWFrTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcC5wcm90b3R5cGUsICdoYXMnLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdoYXMnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTsgLy8gRUNNQS0yNjIgMjMuMy4zLjUgV2Vha01hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpXG5cbiAgICBkZWZpbmVQcm9wZXJ0eShXZWFrTWFwLnByb3RvdHlwZSwgJ3NldCcsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBjaGVja0luc3RhbmNlKHRoaXMsICdzZXQnKTtcblxuICAgICAgaWYgKCFpc09iamVjdChrZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdmFsdWUgdXNlZCBhcyB3ZWFrIG1hcCBrZXknKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVudHJ5ID0ga2V5W3RoaXMuX2lkXTtcblxuICAgICAgaWYgKGVudHJ5ICYmIGVudHJ5WzBdID09PSBrZXkpIHtcbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGRlZmluZVByb3BlcnR5KGtleSwgdGhpcy5faWQsIFtrZXksIHZhbHVlXSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5zdGFuY2UoeCwgbWV0aG9kTmFtZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh4KSB8fCAhaGFzT3duUHJvcGVydHkuY2FsbCh4LCAnX2lkJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtZXRob2ROYW1lICsgJyBtZXRob2QgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciAnICsgdHlwZW9mIHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdlbklkKHByZWZpeCkge1xuICAgICAgcmV0dXJuIHByZWZpeCArICdfJyArIHJhbmQoKSArICcuJyArIHJhbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByYW5kKCkge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMik7XG4gICAgfVxuXG4gICAgZGVmaW5lUHJvcGVydHkoV2Vha01hcCwgJ19wb2x5ZmlsbCcsIHRydWUpO1xuICAgIHJldHVybiBXZWFrTWFwO1xuICB9KCk7XG5cbiAgZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuICAgIHJldHVybiBPYmplY3QoeCkgPT09IHg7XG4gIH1cbn0pKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgY29tbW9uanNHbG9iYWwgIT09ICd1bmRlZmluZWQnID8gY29tbW9uanNHbG9iYWwgOiBjb21tb25qc0dsb2JhbCk7XG5cbnZhciBucG9fc3JjID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuLyohIE5hdGl2ZSBQcm9taXNlIE9ubHlcbiAgICB2MC44LjEgKGMpIEt5bGUgU2ltcHNvblxuICAgIE1JVCBMaWNlbnNlOiBodHRwOi8vZ2V0aWZ5Lm1pdC1saWNlbnNlLm9yZ1xuKi9cbihmdW5jdGlvbiBVTUQobmFtZSwgY29udGV4dCwgZGVmaW5pdGlvbikge1xuICAvLyBzcGVjaWFsIGZvcm0gb2YgVU1EIGZvciBwb2x5ZmlsbGluZyBhY3Jvc3MgZXZpcm9ubWVudHNcbiAgY29udGV4dFtuYW1lXSA9IGNvbnRleHRbbmFtZV0gfHwgZGVmaW5pdGlvbigpO1xuXG4gIGlmICggbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGNvbnRleHRbbmFtZV07XG4gIH1cbn0pKFwiUHJvbWlzZVwiLCB0eXBlb2YgY29tbW9uanNHbG9iYWwgIT0gXCJ1bmRlZmluZWRcIiA/IGNvbW1vbmpzR2xvYmFsIDogY29tbW9uanNHbG9iYWwsIGZ1bmN0aW9uIERFRigpIHtcblxuICB2YXIgYnVpbHRJblByb3AsXG4gICAgICBjeWNsZSxcbiAgICAgIHNjaGVkdWxpbmdfcXVldWUsXG4gICAgICBUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsXG4gICAgICB0aW1lciA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgIT0gXCJ1bmRlZmluZWRcIiA/IGZ1bmN0aW9uIHRpbWVyKGZuKSB7XG4gICAgcmV0dXJuIHNldEltbWVkaWF0ZShmbik7XG4gIH0gOiBzZXRUaW
101301lb3V0OyAvLyBkYW1taXQsIElFOC5cblxuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJ4XCIsIHt9KTtcblxuICAgIGJ1aWx0SW5Qcm9wID0gZnVuY3Rpb24gYnVpbHRJblByb3Aob2JqLCBuYW1lLCB2YWwsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG5hbWUsIHtcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogY29uZmlnICE9PSBmYWxzZVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYnVpbHRJblByb3AgPSBmdW5jdGlvbiBidWlsdEluUHJvcChvYmosIG5hbWUsIHZhbCkge1xuICAgICAgb2JqW25hbWVdID0gdmFsO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICB9IC8vIE5vdGU6IHVzaW5nIGEgcXVldWUgaW5zdGVhZCBvZiBhcnJheSBmb3IgZWZmaWNpZW5jeVxuXG5cbiAgc2NoZWR1bGluZ19xdWV1ZSA9IGZ1bmN0aW9uIFF1ZXVlKCkge1xuICAgIHZhciBmaXJzdCwgbGFzdCwgaXRlbTtcblxuICAgIGZ1bmN0aW9uIEl0ZW0oZm4sIHNlbGYpIHtcbiAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICAgIHRoaXMuc2VsZiA9IHNlbGY7XG4gICAgICB0aGlzLm5leHQgPSB2b2lkIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZDogZnVuY3Rpb24gYWRkKGZuLCBzZWxmKSB7XG4gICAgICAgIGl0ZW0gPSBuZXcgSXRlbShmbiwgc2VsZik7XG5cbiAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICBsYXN0Lm5leHQgPSBpdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpcnN0ID0gaXRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3QgPSBpdGVtO1xuICAgICAgICBpdGVtID0gdm9pZCAwO1xuICAgICAgfSxcbiAgICAgIGRyYWluOiBmdW5jdGlvbiBkcmFpbigpIHtcbiAgICAgICAgdmFyIGYgPSBmaXJzdDtcbiAgICAgICAgZmlyc3QgPSBsYXN0ID0gY3ljbGUgPSB2b2lkIDA7XG5cbiAgICAgICAgd2hpbGUgKGYpIHtcbiAgICAgICAgICBmLmZuLmNhbGwoZi5zZWxmKTtcbiAgICAgICAgICBmID0gZi5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSgpO1xuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKGZuLCBzZWxmKSB7XG4gICAgc2NoZWR1bGluZ19xdWV1ZS5hZGQoZm4sIHNlbGYpO1xuXG4gICAgaWYgKCFjeWNsZSkge1xuICAgICAgY3ljbGUgPSB0aW1lcihzY2hlZHVsaW5nX3F1ZXVlLmRyYWluKTtcbiAgICB9XG4gIH0gLy8gcHJvbWlzZSBkdWNrIHR5cGluZ1xuXG5cbiAgZnVuY3Rpb24gaXNUaGVuYWJsZShvKSB7XG4gICAgdmFyIF90aGVuLFxuICAgICAgICBvX3R5cGUgPSB0eXBlb2YgbztcblxuICAgIGlmIChvICE9IG51bGwgJiYgKG9fdHlwZSA9PSBcIm9iamVjdFwiIHx8IG9fdHlwZSA9PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgICBfdGhlbiA9IG8udGhlbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZW9mIF90aGVuID09IFwiZnVuY3Rpb25cIiA/IF90aGVuIDogZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBub3RpZnkoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoYWluLmxlbmd0aDsgaSsrKSB7XG4gICAgICBub3RpZnlJc29sYXRlZCh0aGlzLCB0aGlzLnN0YXRlID09PSAxID8gdGhpcy5jaGFpbltpXS5zdWNjZXNzIDogdGhpcy5jaGFpbltpXS5mYWlsdXJlLCB0aGlzLmNoYWluW2ldKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYWluLmxlbmd0aCA9IDA7XG4gIH0gLy8gTk9URTogVGhpcyBpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGlzb2xhdGVcbiAgLy8gdGhlIGB0cnkuLmNhdGNoYCBzbyB0aGF0IG90aGVyIGNvZGUgY2FuIGJlXG4gIC8vIG9wdGltaXplZCBiZXR0ZXJcblxuXG4gIGZ1bmN0aW9uIG5vdGlmeUlzb2xhdGVkKHNlbGYsIGNiLCBjaGFpbikge1xuICAgIHZhciByZXQsIF90aGVuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChjYiA9PT0gZmFsc2UpIHtcbiAgICAgICAgY2hhaW4ucmVqZWN0KHNlbGYubXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjYiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHJldCA9IHNlbGYubXNnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IGNiLmNhbGwodm9pZCAwLCBzZWxmLm1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmV0ID09PSBjaGFpbi5wcm9taXNlKSB7XG4gICAgICAgICAgY2hhaW4ucmVqZWN0KFR5cGVFcnJvcihcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpO1xuICAgICAgICB9IGVsc2UgaWYgKF90aGVuID0gaXNUaGVuYWJsZShyZXQpKSB7XG4gICAgICAgICAgX3RoZW4uY2FsbChyZXQsIGNoYWluLnJlc29sdmUsIGNoYWluLnJlamVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hhaW4ucmVzb2x2ZShyZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjaGFpbi5yZWplY3QoZXJyKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlKG1zZykge1xuICAgIHZhciBfdGhlbixcbiAgICAgICAgc2VsZiA9IHRoaXM7IC8vIGFscmVhZHkgdHJpZ2dlcmVkP1xuXG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnRyaWdnZXJlZCA9IHRydWU7IC8vIHVud3JhcFxuXG4gICAgaWYgKHNlbGYuZGVmKSB7XG4gICAgICBzZWxmID0gc2VsZi5kZWY7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChfdGhlbiA9IGlzVGhlbmFibGUobXNnKSkge1xuICAgICAgICBzY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGRlZl93cmFwcGVyID0gbmV3IE1ha2VEZWZXcmFwcGVyKHNlbGYpO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIF90aGVuLmNhbGwobXNnLCBmdW5jdGlvbiAkcmVzb2x2ZSQoKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUuYXBwbHkoZGVmX3dyYXBwZXIsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAkcmVqZWN0JCgpIHtcbiAgICAgICAgICAgICAgcmVqZWN0LmFwcGx5KGRlZl93cmFwcGVyLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QuY2FsbChkZWZfd3JhcHBlciwgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgI
10130H0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5tc2cgPSBtc2c7XG4gICAgICAgIHNlbGYuc3RhdGUgPSAxO1xuXG4gICAgICAgIGlmIChzZWxmLmNoYWluLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBzY2hlZHVsZShub3RpZnksIHNlbGYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QuY2FsbChuZXcgTWFrZURlZldyYXBwZXIoc2VsZiksIGVycik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVqZWN0KG1zZykge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gYWxyZWFkeSB0cmlnZ2VyZWQ/XG5cbiAgICBpZiAoc2VsZi50cmlnZ2VyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnRyaWdnZXJlZCA9IHRydWU7IC8vIHVud3JhcFxuXG4gICAgaWYgKHNlbGYuZGVmKSB7XG4gICAgICBzZWxmID0gc2VsZi5kZWY7XG4gICAgfVxuXG4gICAgc2VsZi5tc2cgPSBtc2c7XG4gICAgc2VsZi5zdGF0ZSA9IDI7XG5cbiAgICBpZiAoc2VsZi5jaGFpbi5sZW5ndGggPiAwKSB7XG4gICAgICBzY2hlZHVsZShub3RpZnksIHNlbGYpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGl0ZXJhdGVQcm9taXNlcyhDb25zdHJ1Y3RvciwgYXJyLCByZXNvbHZlciwgcmVqZWN0ZXIpIHtcbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBhcnIubGVuZ3RoOyBpZHgrKykge1xuICAgICAgKGZ1bmN0aW9uIElJRkUoaWR4KSB7XG4gICAgICAgIENvbnN0cnVjdG9yLnJlc29sdmUoYXJyW2lkeF0pLnRoZW4oZnVuY3Rpb24gJHJlc29sdmVyJChtc2cpIHtcbiAgICAgICAgICByZXNvbHZlcihpZHgsIG1zZyk7XG4gICAgICAgIH0sIHJlamVjdGVyKTtcbiAgICAgIH0pKGlkeCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gTWFrZURlZldyYXBwZXIoc2VsZikge1xuICAgIHRoaXMuZGVmID0gc2VsZjtcbiAgICB0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gTWFrZURlZihzZWxmKSB7XG4gICAgdGhpcy5wcm9taXNlID0gc2VsZjtcbiAgICB0aGlzLnN0YXRlID0gMDtcbiAgICB0aGlzLnRyaWdnZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2hhaW4gPSBbXTtcbiAgICB0aGlzLm1zZyA9IHZvaWQgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX19OUE9fXyAhPT0gMCkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgcHJvbWlzZVwiKTtcbiAgICB9IC8vIGluc3RhbmNlIHNoYWRvd2luZyB0aGUgaW5oZXJpdGVkIFwiYnJhbmRcIlxuICAgIC8vIHRvIHNpZ25hbCBhbiBhbHJlYWR5IFwiaW5pdGlhbGl6ZWRcIiBwcm9taXNlXG5cblxuICAgIHRoaXMuX19OUE9fXyA9IDE7XG4gICAgdmFyIGRlZiA9IG5ldyBNYWtlRGVmKHRoaXMpO1xuXG4gICAgdGhpc1tcInRoZW5cIl0gPSBmdW5jdGlvbiB0aGVuKHN1Y2Nlc3MsIGZhaWx1cmUpIHtcbiAgICAgIHZhciBvID0ge1xuICAgICAgICBzdWNjZXNzOiB0eXBlb2Ygc3VjY2VzcyA9PSBcImZ1bmN0aW9uXCIgPyBzdWNjZXNzIDogdHJ1ZSxcbiAgICAgICAgZmFpbHVyZTogdHlwZW9mIGZhaWx1cmUgPT0gXCJmdW5jdGlvblwiID8gZmFpbHVy
10130ZSA6IGZhbHNlXG4gICAgICB9OyAvLyBOb3RlOiBgdGhlbiguLilgIGl0c2VsZiBjYW4gYmUgYm9ycm93ZWQgdG8gYmUgdXNlZCBhZ2FpbnN0XG4gICAgICAvLyBhIGRpZmZlcmVudCBwcm9taXNlIGNvbnN0cnVjdG9yIGZvciBtYWtpbmcgdGhlIGNoYWluZWQgcHJvbWlzZSxcbiAgICAgIC8vIGJ5IHN1YnN0aXR1dGluZyBhIGRpZmZlcmVudCBgdGhpc2AgYmluZGluZy5cblxuICAgICAgby5wcm9taXNlID0gbmV3IHRoaXMuY29uc3RydWN0b3IoZnVuY3Rpb24gZXh0cmFjdENoYWluKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiTm90IGEgZnVuY3Rpb25cIik7XG4gICAgICAgIH1cblxuICAgICAgICBvLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICBvLnJlamVjdCA9IHJlamVjdDtcbiAgICAgIH0pO1xuICAgICAgZGVmLmNoYWluLnB1c2gobyk7XG5cbiAgICAgIGlmIChkZWYuc3RhdGUgIT09IDApIHtcbiAgICAgICAgc2NoZWR1bGUobm90aWZ5LCBkZWYpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gby5wcm9taXNlO1xuICAgIH07XG5cbiAgICB0aGlzW1wiY2F0Y2hcIl0gPSBmdW5jdGlvbiAkY2F0Y2gkKGZhaWx1cmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odm9pZCAwLCBmYWlsdXJlKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yLmNhbGwodm9pZCAwLCBmdW5jdGlvbiBwdWJsaWNSZXNvbHZlKG1zZykge1xuICAgICAgICByZXNvbHZlLmNhbGwoZGVmLCBtc2cpO1xuICAgICAgfSwgZnVuY3Rpb24gcHVibGljUmVqZWN0KG1zZykge1xuICAgICAgICByZWplY3QuY2FsbChkZWYsIG1zZyk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlamVjdC5jYWxsKGRlZiwgZXJyKTtcbiAgICB9XG4gIH1cblxuICB2YXIgUHJvbWlzZVByb3RvdHlwZSA9IGJ1aWx0SW5Qcm9wKHt9LCBcImNvbnN0cnVjdG9yXCIsIFByb21pc2UsXG4gIC8qY29uZmlndXJhYmxlPSovXG4gIGZhbHNlKTsgLy8gTm90ZTogQW5kcm9pZCA0IGNhbm5vdCB1c2UgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSguLilgIGhlcmVcblxuICBQcm9taXNlLnByb3RvdHlwZSA9IFByb21pc2VQcm90b3R5cGU7IC8vIGJ1aWx0LWluIFwiYnJhbmRcIiB0byBzaWduYWwgYW4gXCJ1bmluaXRpYWxpemVkXCIgcHJvbWlzZVxuXG4gIGJ1aWx0SW5Qcm9wKFByb21pc2VQcm90b3R5cGUsIFwiX19OUE9fX1wiLCAwLFxuICAvKmNvbmZpZ3VyYWJsZT0qL1xuICBmYWxzZSk7XG4gIGJ1aWx0SW5Qcm9wKFByb21pc2UsIFwicmVzb2x2ZVwiLCBmdW5jdGlvbiBQcm9taXNlJHJlc29sdmUobXNnKSB7XG4gICAgdmFyIENvbnN0cnVjdG9yID0gdGhpczsgLy8gc3BlYyBtYW5kYXRlZCBjaGVja3NcbiAgICAvLyBub3RlOiBiZXN0IFwiaXNQcm9taXNlXCIgY2hlY2sgdGhhdCdzIHByYWN0aWNhbCBmb3Igbm93XG5cbiAgICBpZiAobXNnICYmIHR5cGVvZiBtc2cgPT0gXCJvYmplY3RcIiAmJiBtc2cuX19OUE9fXyA9PT0gMSkge1xuICAgICAgcmV0dXJuIG1zZztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShtc2cpO1xuICAgIH0pO1xuICB9KTtcbiAgYnVpbHRJblByb3AoUHJvbWlzZSwgXCJyZWplY3RcIiwgZnVuY3Rpb24gUHJvbWlzZSRyZWplY3QobXNnKSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG1zZyk7XG4gICAgfSk7XG4gIH0pO1xuICBidWlsdEluUHJvcChQcm9taXNlLCBcImFsbFwiLCBmdW5jdGlvbiBQcm9taXNlJGFsbChhcnIpIHtcbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzOyAvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXG4gICAgaWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgIHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcbiAgICB9XG5cbiAgICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIENvbnN0cnVjdG9yLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29uc3RydWN0b3IoZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBpZiAodHlwZW9mIHJlc29sdmUgIT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiByZWplY3QgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcihcIk5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgICAgfVxuXG4gICAgICB2Y
10130XIgbGVuID0gYXJyLmxlbmd0aCxcbiAgICAgICAgICBtc2dzID0gQXJyYXkobGVuKSxcbiAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICBpdGVyYXRlUHJvbWlzZXMoQ29uc3RydWN0b3IsIGFyciwgZnVuY3Rpb24gcmVzb2x2ZXIoaWR4LCBtc2cpIHtcbiAgICAgICAgbXNnc1tpZHhdID0gbXNnO1xuXG4gICAgICAgIGlmICgrK2NvdW50ID09PSBsZW4pIHtcbiAgICAgICAgICByZXNvbHZlKG1zZ3MpO1xuICAgICAgICB9XG4gICAgICB9LCByZWplY3QpO1xuICAgIH0pO1xuICB9KTtcbiAgYnVpbHRJblByb3AoUHJvbWlzZSwgXCJyYWNlXCIsIGZ1bmN0aW9uIFByb21pc2UkcmFjZShhcnIpIHtcbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzOyAvLyBzcGVjIG1hbmRhdGVkIGNoZWNrc1xuXG4gICAgaWYgKFRvU3RyaW5nLmNhbGwoYXJyKSAhPSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgIHJldHVybiBDb25zdHJ1Y3Rvci5yZWplY3QoVHlwZUVycm9yKFwiTm90IGFuIGFycmF5XCIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbnN0cnVjdG9yKGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvbHZlICE9IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgcmVqZWN0ICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJOb3QgYSBmdW5jdGlvblwiKTtcbiAgICAgIH1cblxuICAgICAgaXRlcmF0ZVByb21pc2VzKENvbnN0cnVjdG9yLCBhcnIsIGZ1bmN0aW9uIHJlc29sdmVyKGlkeCwgbXNnKSB7XG4gICAgICAgIHJlc29sdmUobXNnKTtcbiAgICAgIH0sIHJlamVjdCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZTtcbn0pO1xufSk7XG5cbi8qKlxuICogQG1vZHVsZSBsaWIvY2FsbGJhY2tzXG4gKi9cbnZhciBjYWxsYmFja01hcCA9IG5ldyBXZWFrTWFwKCk7XG4vKipcbiAqIFN0b3JlIGEgY2FsbGJhY2sgZm9yIGEgbWV0aG9kIG9yIGV2ZW50IGZvciBhIHBsYXllci5cbiAqXG4gKiBAcGFyYW0ge1BsYXllcn0gcGxheWVyIFRoZSBwbGF5ZXIgb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1ldGhvZCBvciBldmVudCBuYW1lLlxuICogQHBhcmFtIHsoZnVuY3Rpb24odGhpczpQbGF5ZXIsICopOiB2b2lkfHtyZXNvbHZlOiBmdW5jdGlvbiwgcmVqZWN0OiBmdW5jdGlvbn0pfSBjYWxsYmFja1xuICogICAgICAgIFRoZSBjYWxsYmFjayB0byBjYWxsIG9yIGFuIG9iamVjdCB3aXRoIHJlc29sdmUgYW5kIHJlamVjdCBmdW5jdGlvbnMgZm9yIGEgcHJvbWlzZS5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gc3RvcmVDYWxsYmFjayhwbGF5ZXIsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIHZhciBwbGF5ZXJDYWxsYmFja3MgPSBjYWxsYmFja01hcC5nZXQocGxheWVyLmVsZW1lbnQpIHx8IHt9O1xuXG4gIGlmICghKG5hbWUgaW4gcGxheWVyQ2FsbGJhY2tzKSkge1xuICAgIHBsYXllckNhbGxiYWNrc1tuYW1lXSA9IFtdO1xuICB9XG5cbiAgcGxheWVyQ2FsbGJhY2tzW25hbWVdLnB1c2goY2FsbGJhY2spO1xuICBjYWxsYmFja01hcC5zZXQocGxheWVyLmVsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG59XG4vKipcbiAqIEdldCB0aGUgY2FsbGJhY2tzIGZvciBhIHBsYXllciBhbmQgZXZlbnQgb3IgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7UGxheWVyfSBwbGF5ZXIgVGhlIHBsYXllciBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWV0aG9kIG9yIGV2ZW50IG5hbWVcbiAqIEByZXR1cm4ge2Z1bmN0aW9uW119XG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSkge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gY2FsbGJhY2tNYXAuZ2V0KHBsYXllci5lbGVtZW50KSB8fCB7fTtcbiAgcmV0dXJuIHBsYXllckNhbGxiYWNrc1tuYW1lXSB8fCBbXTtcbn1cbi8qKlxuICogUmVtb3ZlIGEgc3RvcmVkIGNhbGxiYWNrIGZvciBhIG1ldGhvZCBvciBldmVudCBmb3IgYSBwbGF5ZXIuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtZXRob2Qgb3IgZXZlbnQgbmFtZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgc3BlY2lmaWMgY2FsbGJhY2sgdG8gcmVtb3ZlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2FzIHRoaXMgdGhlIGxhc3QgY2FsbGJhY2s/XG4gKi9cblxuZnVuY3Rpb24gcmVtb3ZlQ2FsbGJhY2socGxheWVyLCBuYW1lLCBjYWxsYmFjaykge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gY2FsbGJhY2tNYXAuZ2V0KHBsYXllci5lbGVtZW50KSB8fCB7fTtcblxuICBpZiAoIXBsYXllckNhbGxiYWNrc1tuYW1lXSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElmIG5vIGNhbGxiYWNrIGlzIHBhc3NlZCwgcmVtb3ZlIGFsbCBjYWxsYmFja3MgZm9yIHRoZSBldmVudFxuXG5cbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHBsYXllckNhbGxiYWNrc1tuYW1lXSA9IFtdO1xuICAgIGNhbGxiYWNrTWFwLnNldChwbGF5ZXIuZWxlbWVudCwgcGxheWVyQ2FsbGJhY2tzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHBsYXllckNhbGxiYWNrc1tuYW1lXS5pbmRleE9mKGNhbGxiYWNrKTtcblxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgcGxheWVyQ2FsbGJhY2tzW25hbWVdLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjYWxsYmFja01hcC5zZXQocGxheWVyLmVsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG4gIHJldHVybiBwbGF5ZXJDYWxsYmFja3NbbmFtZV0gJiYgcGxheWVyQ2FsbGJhY2tzW25hbWVdLmxlbmd0aCA9PT0gMDtcbn1cbi8qKlxuICogUmV0dXJuIHRoZSBmaXJzdCBzdG9yZWQgY2FsbGJhY2sgZm9yIGEgcGxheWVyIGFuZCBldmVudCBvciBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtZXRob2Qgb3IgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgY2FsbGJhY2ssIG9yIGZhbHNlIGlmIHRoZXJlIHdlcmUgbm9uZVxuICovXG5cbmZ1bmN0aW9uIHNoaWZ0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSkge1xuICB2YXIgcGxheWVyQ2FsbGJhY2tzID0gZ2V0Q2FsbGJhY2tzKHBsYXllciwgbmFtZSk7XG5cbiAgaWYgKHBsYXllckNhbGxiYWNrcy5sZW5ndGggPCAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrID0gcGxheWVyQ2FsbGJhY2tzLnNoaWZ0KCk7XG4gIHJlbW92ZUNhbGxiYWNrKHBsYXllciwgbmFtZSwgY2FsbGJhY2spO1xuICByZXR1cm4gY2FsbGJhY2s7XG59XG4vKipcbiAqIE1vdmUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50IHRvIGFub3RoZXIgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBvbGRFbGVtZW50IFRoZSBvbGQgZWxlbWVudC5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5ld0VsZW1lbnQgVGhlIG5ldyBlbGVtZW50LlxuICogQHJldHVybi
10130B7dm9pZH1cbiAqL1xuXG5mdW5jdGlvbiBzd2FwQ2FsbGJhY2tzKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgdmFyIHBsYXllckNhbGxiYWNrcyA9IGNhbGxiYWNrTWFwLmdldChvbGRFbGVtZW50KTtcbiAgY2FsbGJhY2tNYXAuc2V0KG5ld0VsZW1lbnQsIHBsYXllckNhbGxiYWNrcyk7XG4gIGNhbGxiYWNrTWFwLmRlbGV0ZShvbGRFbGVtZW50KTtcbn1cblxuLyoqXG4gKiBAbW9kdWxlIGxpYi9wb3N0bWVzc2FnZVxuICovXG4vKipcbiAqIFBhcnNlIGEgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHBvc3RNZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgZGF0YSByZWNlaXZlZCBmcm9tIHBvc3RNZXNzYWdlLlxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlTWVzc2FnZURhdGEoZGF0YSkge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgcGFyc2VkLCB0aHJvdyB0aGUgZXJyb3IgYXMgYSB3YXJuaW5nXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBQb3N0IGEgbWVzc2FnZSB0byB0aGUgc3BlY2lmaWVkIHRhcmdldC5cbiAqXG4gKiBAcGFyYW0ge1BsYXllcn0gcGxheWVyIFRoZSBwbGF5ZXIgb2JqZWN0IHRvIHVzZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgVGhlIEFQSSBtZXRob2QgdG8gY2FsbC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgdG8gc2VuZCB0byB0aGUgcGxheWVyLlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG5mdW5jdGlvbiBwb3N0TWVzc2FnZShwbGF5ZXIsIG1ldGhvZCwgcGFyYW1zKSB7XG4gIGlmICghcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdyB8fCAhcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBtZXNzYWdlID0ge1xuICAgIG1ldGhvZDogbWV0aG9kXG4gIH07XG5cbiAgaWYgKHBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbWVzc2FnZS52YWx1ZSA9IHBhcmFtcztcbiAgfSAvLyBJRSA4IGFuZCA5IGRvIG5vdCBzdXBwb3J0IHBhc3NpbmcgbWVzc2FnZXMsIHNvIHN0cmluZ2lmeSB0aGVtXG5cblxuICB2YXIgaWVWZXJzaW9uID0gcGFyc2VGbG9hdChuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXi4qbXNpZSAoXFxkKykuKiQvLCAnJDEnKSk7XG5cbiAgaWYgKGllVmVyc2lvbiA+PSA4ICYmIGllVmVyc2lvbiA8IDEwKSB7XG4gICAgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpO1xuICB9XG5cbiAgcGxheWVyLmVsZW1lbnQuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShtZXNzYWdlLCBwbGF5ZXIub3JpZ2luKTtcbn1cbi8qKlxuICogUGFyc2UgdGhlIGRhdGEgcmVjZWl2ZWQgZnJvbSBhIG1lc3NhZ2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIHtQbGF5ZXJ9IHBsYXllciBUaGUgcGxheWVyIHRoYXQgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UuXG4gKiBAcGFyYW0geyhPYmplY3R8c3RyaW5nKX0gZGF0YSBUaGUgbWVzc2FnZSBkYXRhLiBTdHJpbmdzIHdpbGwgYmUgcGFyc2VkIGludG8gSlNPTi5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gcHJvY2Vzc0RhdGEocGxheWVyLCBkYXRhKSB7XG4gIGRhdGEgPSBwYXJzZU1lc3NhZ2VEYXRhKGRhdGEpO1xuICB2YXIgY2FsbGJhY2tzID0gW107XG4gIHZhciBwYXJhbTtcblxuICBpZiAoZGF0YS5ldmVudCkge1xuICAgIGlmIChkYXRhLmV2ZW50ID09PSAnZXJyb3InKSB7XG4gICAgICB2Y
10130XIgcHJvbWlzZXMgPSBnZXRDYWxsYmFja3MocGxheWVyLCBkYXRhLmRhdGEubWV0aG9kKTtcbiAgICAgIHByb21pc2VzLmZvckVhY2goZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgZXJyb3IubmFtZSA9IGRhdGEuZGF0YS5uYW1lO1xuICAgICAgICBwcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIHJlbW92ZUNhbGxiYWNrKHBsYXllciwgZGF0YS5kYXRhLm1ldGhvZCwgcHJvbWlzZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWxsYmFja3MgPSBnZXRDYWxsYmFja3MocGxheWVyLCBcImV2ZW50OlwiLmNvbmNhdChkYXRhLmV2ZW50KSk7XG4gICAgcGFyYW0gPSBkYXRhLmRhdGE7XG4gIH0gZWxzZSBpZiAoZGF0YS5tZXRob2QpIHtcbiAgICB2YXIgY2FsbGJhY2sgPSBzaGlmdENhbGxiYWNrcyhwbGF5ZXIsIGRhdGEubWV0aG9kKTtcblxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgcGFyYW0gPSBkYXRhLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwocGxheWVyLCBwYXJhbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sucmVzb2x2ZShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkgey8vIGVtcHR5XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBAbW9kdWxlIGxpYi9lbWJlZFxuICovXG52YXIgb0VtYmVkUGFyYW1ldGVycyA9IFsnYXV0b3BhdXNlJywgJ2F1dG9wbGF5JywgJ2JhY2tncm91bmQnLCAnYnlsaW5lJywgJ2NvbG9yJywgJ2NvbnRyb2xzJywgJ2RudCcsICdoZWlnaHQnLCAnaWQnLCAnaW50ZXJhY3RpdmVfcGFyYW1zJywgJ2tleWJvYXJkJywgJ2xvb3AnLCAnbWF4aGVpZ2h0JywgJ21heHdpZHRoJywgJ211dGVkJywgJ3BsYXlzaW5saW5lJywgJ3BvcnRyYWl0JywgJ3Jlc3BvbnNpdmUnLCAnc3BlZWQnLCAndGV4dHRyYWNrJywgJ3RpdGxlJywgJ3RyYW5zcGFyZW50JywgJ3VybCcsICd3aWR0aCddO1xuLyoqXG4gKiBHZXQgdGhlICdkYXRhLXZpbWVvJy1wcmVmaXhlZCBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudCBhcyBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZGVmYXVsdHM9e31dIFRoZSBkZWZhdWx0IHZhbHVlcyB0byB1c2UuXG4gKiBAcmV0dXJuIHtPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fVxuICovXG5cbmZ1bmN0aW9uIGdldE9FbWJlZFBhcmFtZXRlcnMoZWxlbWVudCkge1xuICB2YXIgZGVmYXVsdHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICByZXR1cm4gb0VtYmVkUGFyYW1ldGVycy5yZWR1Y2UoZnVuY3Rpb24gKHBhcmFtcywgcGFyYW0pIHtcbiAgICB2YXIgdmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtdmltZW8tXCIuY29uY2F0KHBhcmFtKSk7XG5cbiAgICBpZiAodmFsdWUgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICBwYXJhbXNbcGFyYW1dID0gdmFsdWUgPT09ICcnID8gMSA6IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH0sIGRlZmF1bHRzKTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuIGVtYmVkIGZyb20gb0VtYmVkIGRhdGEgaW5zaWRlIGFuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9FbWJlZCBkYXRhLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBwdXQgdGhlIGlmcmFtZSBpbi5cbiAqIEByZXR1cm4ge0hUTUxJRnJhbWVFbGVtZW50fSBUaGUgaWZyYW1lIGVtYmVkLlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVtYmVkKF9yZWYsIGVsZW1lbnQpIHtcbiAgdmFyIGh0bWwgPSBfcmVmLmh0bWw7XG5cbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQW4gZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gIH1cblxuICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmltZW8taW5pdGlhbGl6ZWQnKSAhPT0gbnVsbCkge1xuICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpO1xuICB9XG5cbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgZWxlbWVudC5hcHBlbmRDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXZpbWVvLWluaXRpYWxpemVkJywgJ3RydWUnKTtcbiAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG59XG4vKipcbiAqIE1ha2UgYW4gb0VtYmVkIGNhbGwgZm9yIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2aWRlb1VybCBUaGUgdmltZW8uY29tIHVybCBmb3IgdGhlIHZpZGVvLlxuICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIFBhcmFtZXRlcnMgdG8gcGFzcyB0byBvRW1iZWQuXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50LlxuICogQHJldHVybiB7UHJvbWlzZX1cbiAqL1xuXG5mdW5jdGlvbiBnZXRPRW1iZWREYXRhKHZpZGVvVXJsKSB7XG4gIHZhciBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICB2YXIgZWxlbWVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICghaXNWaW1lb1VybCh2aWRlb1VybCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGEgdmltZW8uY29tIHVybC5cIikpO1xuICAgIH1cblxuICAgI
10130HZhciB1cmwgPSBcImh0dHBzOi8vdmltZW8uY29tL2FwaS9vZW1iZWQuanNvbj91cmw9XCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCh2aWRlb1VybCkpO1xuXG4gICAgZm9yICh2YXIgcGFyYW0gaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkge1xuICAgICAgICB1cmwgKz0gXCImXCIuY29uY2F0KHBhcmFtLCBcIj1cIikuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNbcGFyYW1dKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHhociA9ICdYRG9tYWluUmVxdWVzdCcgaW4gd2luZG93ID8gbmV3IFhEb21haW5SZXF1ZXN0KCkgOiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTtcblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgd2FzIG5vdCBmb3VuZC5cIikpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGVtYmVkZGFibGUuXCIpKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOyAvLyBDaGVjayBhcGkgcmVzcG9uc2UgZm9yIDQwMyBvbiBvZW1iZWRcblxuICAgICAgICBpZiAoanNvbi5kb21haW5fc3RhdHVzX2NvZGUgPT09IDQwMykge1xuICAgICAgICAgIC8vIFdlIHN0aWxsIHdhbnQgdG8gY3JlYXRlIHRoZSBlbWJlZCB0byBnaXZlIHVzZXJzIHZpc3VhbCBmZWVkYmFja1xuICAgICAgICAgIGNyZWF0ZUVtYmVkKGpzb24sIGVsZW1lbnQpO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJcXHUyMDFDXCIuY29uY2F0KHZpZGVvVXJsLCBcIlxcdTIwMUQgaXMgbm90IGVtYmVkZGFibGUuXCIpKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShqc29uKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHN0YXR1cyA9IHhoci5zdGF0dXMgPyBcIiAoXCIuY29uY2F0KHhoci5zdGF0dXMsIFwiKVwiKSA6ICcnO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgZW1iZWQgY29kZSBmcm9tIFZpbWVvXCIuY29uY2F0KHN0YXR1cywgXCIuXCIpKSk7XG4gICAgfTtcblxuICAgIHhoci5zZW5kKCk7XG4gIH0pO1xufVxuLyoqXG4gKiBJbml0aWFsaXplIGFsbCBlbWJlZHMgd2l0aGluIGEgc3BlY2lmaWMgZWxlbWVudFxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gaW5pdGlhbGl6ZUVtYmVkcygpIHtcbiAgdmFyIHBhcmVudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZG9jdW1lbnQ7XG4gIHZhciBlbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZpbWVvLWlkXSwgW2RhdGEtdmltZW8tdXJsXScpKTtcblxuICB2YXIgaGFuZGxlRXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmICgnY29uc29sZScgaW4gd2luZG93ICYmIGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gZXJyb3IgY3JlYXRpbmcgYW4gZW1iZWQ6IFwiLmNvbmNhdChlcnJvcikpO1xuICAgIH1cbiAgfTtcblxuICBlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFNraXAgYW55IHRoYXQgaGF2ZSBkYXRhLXZpbWVvLWRlZmVyXG4gICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmltZW8tZGVmZXInKSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJhbXMgPSBnZXRPRW1iZWRQYXJhbWV0ZXJzKGVsZW1lbnQpO1xuICAgICAgdmFyIHVybCA9IGdldFZpbWVvVXJsKHBhcmFtcyk7XG4gICAgICBnZXRPRW1iZWREYXRhKHVybCwgcGFyYW1zLCBlbGVtZW50KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbWJlZChkYXRhLCBlbGVtZW50KTtcbiAgICAgIH0pLmNhdGNoKGhhbmRsZUVycm9yKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfSk7XG59XG4vKipcbiAqIFJlc2l6ZSBlbWJlZHMgd2hlbiBtZXNzYWdlZCBieSB0aGUgcGxheWVyLlxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gcmVzaXplRW1iZWRzKCkge1xuICB2YXIgcGFyZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBkb2N1bWVudDtcblxuICAvLyBQcmV2ZW50IGV4ZWN1dGlvbiBpZiB1c2VycyBpbmNsdWRlIHRoZSBwbGF5ZXIuanMgc2NyaXB0IG11bHRpcGxlIHRpbWVzLlxuICBpZiAod2luZG93LlZpbWVvUGxheWVyUmVzaXplRW1iZWRzXykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdpbmRvdy5WaW1lb1BsYXllclJlc2l6ZUVtYmVkc18gPSB0cnVlO1xuXG4gIHZhciBvbk1lc3NhZ2UgPSBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWlzVmltZW9VcmwoZXZlbnQub3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gJ3NwYWNlY2hhbmdlJyBpcyBmaXJlZCBvbmx5IG9uIGVtYmVkcyB3aXRoIGNhcmRzXG5cblxuICAgIGlmICghZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhLmV2ZW50ICE9PSAnc3BhY2VjaGFuZ2UnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlmcmFtZXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChpZnJhbWVzW2ldLmNvbnRlbn
10130RXaW5kb3cgIT09IGV2ZW50LnNvdXJjZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gQ2hhbmdlIHBhZGRpbmctYm90dG9tIG9mIHRoZSBlbmNsb3NpbmcgZGl2IHRvIGFjY29tbW9kYXRlXG4gICAgICAvLyBjYXJkIGNhcm91c2VsIHdpdGhvdXQgZGlzdG9ydGluZyBhc3BlY3QgcmF0aW9cblxuXG4gICAgICB2YXIgc3BhY2UgPSBpZnJhbWVzW2ldLnBhcmVudEVsZW1lbnQ7XG4gICAgICBzcGFjZS5zdHlsZS5wYWRkaW5nQm90dG9tID0gXCJcIi5jb25jYXQoZXZlbnQuZGF0YS5kYXRhWzBdLmJvdHRvbSwgXCJweFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSk7XG59XG4vKipcbiAqIEFkZCBjaGFwdGVycyB0byBleGlzdGluZyBtZXRhZGF0YSBmb3IgR29vZ2xlIFNFT1xuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtwYXJlbnQ9ZG9jdW1lbnRdIFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuZnVuY3Rpb24gaW5pdEFwcGVuZFZpZGVvTWV0YWRhdGEoKSB7XG4gIHZhciBwYXJlbnQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGRvY3VtZW50O1xuXG4gIC8vICBQcmV2ZW50IGV4ZWN1dGlvbiBpZiB1c2VycyBpbmNsdWRlIHRoZSBwbGF5ZXIuanMgc2NyaXB0IG11bHRpcGxlIHRpbWVzLlxuICBpZiAod2luZG93LlZpbWVvU2VvTWV0YWRhdGFBcHBlbmRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdpbmRvdy5WaW1lb1Nlb01ldGFkYXRhQXBwZW5kZWQgPSB0cnVlO1xuXG4gIHZhciBvbk1lc3NhZ2UgPSBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWlzVmltZW9VcmwoZXZlbnQub3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkYXRhID0gcGFyc2VNZXNzYWdlRGF0YShldmVudC5kYXRhKTtcblxuICAgIGlmICghZGF0YSB8fCBkYXRhLmV2ZW50ICE9PSAncmVhZHknKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlmcmFtZXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbCgnaWZyYW1lJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZnJhbWUgPSBpZnJhbWVzW2ldOyAvLyBJbml0aWF0ZSBhcHBlbmRWaWRlb01ldGFkYXRhIGlmIGlmcmFtZSBpcyBhIFZpbWVvIGVtYmVkXG5cbiAgICAgIHZhciBpc1ZhbGlkTWVzc2FnZVNvdXJjZSA9IGlmcmFtZS5jb250ZW50V2luZG93ID09PSBldmVudC5zb3VyY2U7XG5cbiAgICAgIGlmIChpc1ZpbWVvRW1iZWQoaWZyYW1lLnNyYykgJiYgaXNWYWxpZE1lc3NhZ2VTb3VyY2UpIHtcbiAgICAgICAgdmFyIHBsYXllciA9IG5ldyBQbGF5ZXIkMShpZnJhbWUpO1xuICAgICAgICBwbGF5ZXIuY2FsbE1ldGhvZCgnYXBwZW5kVmlkZW9NZXRhZGF0YScsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBvbk1lc3NhZ2UpO1xufVxuXG4vKiBNSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIFNpbmRyZSBTb3JodXMgPHNpbmRyZXNvcmh1c0BnbWFpbC5jb20+IChzaW5kcmVzb3JodXMuY29tKVxuXG5QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5UZXJtcyAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNjcmVlbmZ1bGwoKSB7XG4gIHZhciBmbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdmFsO1xuICAgIHZhciBmbk1hcCA9IFtbJ3JlcXVlc3RGdWxsc2NyZWVuJywgJ2V4aXRGdWxsc2NyZWVuJywgJ2Z1bGxzY3JlZW5FbGVtZW50JywgJ2Z1bGxzY3JlZW5FbmFibGVkJywgJ2Z1bGxzY3JlZW5jaGFuZ2UnLCAnZnVsbHNjcmVlbmVycm9yJ10sIC8vIE5ldyBXZWJLaXRcbiAgICBbJ3dlYmtpdFJlcXVlc3RGdWxsc2NyZWVuJywgJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJywgJ3dlYmtpdEZ1bGxzY3JlZW5FbGVtZW50JywgJ3dlYmtpdEZ1bGxzY3JlZW5FbmFibGVkJywgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCAnd2Via2l0ZnVsbHNjcmVlbmVycm9yJ10sIC8vIE9sZCBXZWJLaXRcbiAgICBbJ3dlYmtpdFJlcXVlc3RGdWxsU2NyZWVuJywgJ3dlYmtpdENhbmNlbEZ1bGxTY3JlZW4nLCA
10130nd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50JywgJ3dlYmtpdENhbmNlbEZ1bGxTY3JlZW4nLCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsICd3ZWJraXRmdWxsc2NyZWVuZXJyb3InXSwgWydtb3pSZXF1ZXN0RnVsbFNjcmVlbicsICdtb3pDYW5jZWxGdWxsU2NyZWVuJywgJ21vekZ1bGxTY3JlZW5FbGVtZW50JywgJ21vekZ1bGxTY3JlZW5FbmFibGVkJywgJ21vemZ1bGxzY3JlZW5jaGFuZ2UnLCAnbW96ZnVsbHNjcmVlbmVycm9yJ10sIFsnbXNSZXF1ZXN0RnVsbHNjcmVlbicsICdtc0V4aXRGdWxsc2NyZWVuJywgJ21zRnVsbHNjcmVlbkVsZW1lbnQnLCAnbXNGdWxsc2NyZWVuRW5hYmxlZCcsICdNU0Z1bGxzY3JlZW5DaGFuZ2UnLCAnTVNGdWxsc2NyZWVuRXJyb3InXV07XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBsID0gZm5NYXAubGVuZ3RoO1xuICAgIHZhciByZXQgPSB7fTtcblxuICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YWwgPSBmbk1hcFtpXTtcblxuICAgICAgaWYgKHZhbCAmJiB2YWxbMV0gaW4gZG9jdW1lbnQpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHJldFtmbk1hcFswXVtpXV0gPSB2YWxbaV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSgpO1xuXG4gIHZhciBldmVudE5hbWVNYXAgPSB7XG4gICAgZnVsbHNjcmVlbmNoYW5nZTogZm4uZnVsbHNjcmVlbmNoYW5nZSxcbiAgICBmdWxsc2NyZWVuZXJyb3I6IGZuLmZ1bGxzY3JlZW5lcnJvclxuICB9O1xuICB2YXIgc2NyZWVuZnVsbCA9IHtcbiAgICByZXF1ZXN0OiBmdW5jdGlvbiByZXF1ZXN0KGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZS
10130hmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBvbkZ1bGxTY3JlZW5FbnRlcmVkID0gZnVuY3Rpb24gb25GdWxsU2NyZWVuRW50ZXJlZCgpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbkVudGVyZWQpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuRW50ZXJlZCk7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgdmFyIHJldHVyblByb21pc2UgPSBlbGVtZW50W2ZuLnJlcXVlc3RGdWxsc2NyZWVuXSgpO1xuXG4gICAgICAgIGlmIChyZXR1cm5Qcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHJldHVyblByb21pc2UudGhlbihvbkZ1bGxTY3JlZW5FbnRlcmVkKS5jYXRjaChyZWplY3QpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV4aXQ6IGZ1bmN0aW9uIGV4aXQoKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAoIXNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvbkZ1bGxTY3JlZW5FeGl0ID0gZnVuY3Rpb24gb25GdWxsU2NyZWVuRXhpdCgpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIG9uRnVsbFNjcmVlbkV4aXQpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgb25GdWxsU2NyZWVuRXhpdCk7XG4gICAgICAgIHZhciByZXR1cm5Qcm9taXNlID0gZG9jdW1lbnRbZm4uZXhpdEZ1bGxzY3JlZW5dKCk7XG5cbiAgICAgICAgaWYgKHJldHVyblByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgcmV0dXJuUHJvbWlzZS50aGVuKG9uRnVsbFNjcmVlbkV4aXQpLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb246IGZ1bmN0aW9uIG9uKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgdmFyIGV2ZW50TmFtZSA9IGV2ZW50TmFtZU1hcFtldmVudF07XG5cbiAgICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9mZjogZnVuY3Rpb24gb2ZmKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgdmFyIGV2ZW50TmFtZSA9IGV2ZW50TmFtZU1hcFtldmVudF07XG5cbiAgICAgIGlmIChldmVudE5hbWUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNjcmVlbmZ1bGwsIHtcbiAgICBpc0Z1bGxzY3JlZW46IHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gQm9vbGVhbihkb2N1bWVudFtmbi5mdWxsc2NyZWVuRWxlbWVudF0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZWxlbWVudDoge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnRbZm4uZnVsbHNjcmVlbkVsZW1lbnRdO1xuICAgICAgfVxuICAgIH0sXG4gICAgaXNFbmFibGVkOiB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIC8vIENvZXJjZSB0byBib29sZWFuIGluIGNhc2Ugb2Ygb2xkIFdlYktpdFxuICAgICAgICByZXR1cm4gQm9vbGVhbihkb2N1bWVudFtmbi5mdWxsc2NyZWVuRW5hYmxlZF0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzY3JlZW5mdWxsO1xufVxuXG52YXIgcGxheWVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbnZhciByZWFkeU1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgc2NyZWVuZnVsbCA9IHt9O1xuXG52YXIgUGxheWVyJDEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgUGxheWVyLlxuICAgKlxuICAgKiBAcGFyYW0geyhIVE1MSUZyYW1lRWxlbWVudHxIVE1MRWxlbWVudHxzdHJpbmd8alF1ZXJ5KX0gZWxlbWVudCBBIHJlZmVyZW5jZSB0byB0aGUgVmltZW9cbiAgICogICAgICAgIHBsYXllciBpZnJhbWUsIGFuZCBpZCwgb3IgYSBqUXVlcnkgb2JqZWN0LlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIG9FbWJlZCBwYXJhbWV0ZXJzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFuIGVtYmVkIGluIHRoZSBlbGVtZW50LlxuICAgKiBAcmV0dXJuIHtQbGF5ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBQbGF5ZXIoZWxlbWVudCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGxheWVyKTtcblxuICAgIC8qIGdsb2JhbCBqUXVlcnkgKi9cbiAgICBpZiAod2luZG93LmpRdWVyeSAmJiBlbGVtZW50IGluc3RhbmNlb2YgalF1ZXJ5KSB7XG4gICAgICBpZiAoZWxlbWVudC5sZW5ndGggPiAxICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0EgalF1ZXJ5IG9iamVjdCB3aXRoIG11bHRpcGxlIGVsZW1lbnRzIHdhcyBwYXNzZWQsIHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50LicpO1xuICAgICAgfVxuXG4gICAgICBlbGVtZW50ID0gZWxlbWVudFswXTtcbiAgICB9IC8vIEZpbmQgYW4gZWxlbWVudCBieSBJRFxuXG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50KTtcbiAgICB9IC8vIE5vdCBhbiBlbGVtZW50IVxuXG5cbiAgICBpZiAoIWlzRG9tRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBlaXRoZXIgYSB2YWxpZCBlbGVtZW50IG9yIGEgdmFsaWQgaWQuJyk7XG4gICAgfSAvLyBBbHJlYWR5IGluaXRpYWxpemVkIGFuIGVtYmVkIGluIHRoaXMgZGl2LCBzbyBncmFiIHRoZSBpZnJhbWVcblxuXG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgIT09ICdJRlJBTUUnKSB7XG4gICAgICB2Y
10130XIgaWZyYW1lID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTtcblxuICAgICAgaWYgKGlmcmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gaWZyYW1lO1xuICAgICAgfVxuICAgIH0gLy8gaWZyYW1lIHVybCBpcyBub3QgYSBWaW1lbyB1cmxcblxuXG4gICAgaWYgKGVsZW1lbnQubm9kZU5hbWUgPT09ICdJRlJBTUUnICYmICFpc1ZpbWVvVXJsKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzcmMnKSB8fCAnJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHBsYXllciBlbGVtZW50IHBhc3NlZCBpc27igJl0IGEgVmltZW8gZW1iZWQuJyk7XG4gICAgfSAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcGxheWVyIG9iamVjdCBpbiB0aGUgbWFwLCByZXR1cm4gdGhhdFxuXG5cbiAgICBpZiAocGxheWVyTWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIHBsYXllck1hcC5nZXQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fd2luZG93ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcmlnaW4gPSAnKic7XG4gICAgdmFyIHJlYWR5UHJvbWlzZSA9IG5ldyBucG9fc3JjKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIF90aGlzLl9vbk1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFpc1ZpbWVvVXJsKGV2ZW50Lm9yaWdpbikgfHwgX3RoaXMuZWxlbWVudC5jb250ZW50V2luZG93ICE9PSBldmVudC5zb3VyY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX3RoaXMub3JpZ2luID09PSAnKicpIHtcbiAgICAgICAgICBfdGhpcy5vcmlnaW4gPSBldmVudC5vcmlnaW47XG4gICAgICAgIH1cblxuICAgICAgICB2Y
10130XIgZGF0YSA9IHBhcnNlTWVzc2FnZURhdGEoZXZlbnQuZGF0YSk7XG4gICAgICAgIHZhciBpc0Vycm9yID0gZGF0YSAmJiBkYXRhLmV2ZW50ID09PSAnZXJyb3InO1xuICAgICAgICB2YXIgaXNSZWFkeUVycm9yID0gaXNFcnJvciAmJiBkYXRhLmRhdGEgJiYgZGF0YS5kYXRhLm1ldGhvZCA9PT0gJ3JlYWR5JztcblxuICAgICAgICBpZiAoaXNSZWFkeUVycm9yKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICBlcnJvci5uYW1lID0gZGF0YS5kYXRhLm5hbWU7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXNSZWFkeUV2ZW50ID0gZGF0YSAmJiBkYXRhLmV2ZW50ID09PSAncmVhZHknO1xuICAgICAgICB2YXIgaXNQaW5nUmVzcG9uc2UgPSBkYXRhICYmIGRhdGEubWV0aG9kID09PSAncGluZyc7XG5cbiAgICAgICAgaWYgKGlzUmVhZHlFdmVudCB8fCBpc1BpbmdSZXNwb25zZSkge1xuICAgICAgICAgIF90aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXJlYWR5JywgJ3RydWUnKTtcblxuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzRGF0YShfdGhpcywgZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBfdGhpcy5fb25NZXNzYWdlKTtcblxuICAgICAgaWYgKF90aGlzLmVsZW1lbnQubm9kZU5hbWUgIT09ICdJRlJBTUUnKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBnZXRPRW1iZWRQYXJhbWV0ZXJzKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICB2Y
10130XIgdXJsID0gZ2V0VmltZW9VcmwocGFyYW1zKTtcbiAgICAgICAgZ2V0T0VtYmVkRGF0YSh1cmwsIHBhcmFtcywgZWxlbWVudCkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgIHZhciBpZnJhbWUgPSBjcmVhdGVFbWJlZChkYXRhLCBlbGVtZW50KTsgLy8gT3ZlcndyaXRlIGVsZW1lbnQgd2l0aCB0aGUgbmV3IGlmcmFtZSxcbiAgICAgICAgICAvLyBidXQgc3RvcmUgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBlbGVtZW50XG5cbiAgICAgICAgICBfdGhpcy5lbGVtZW50ID0gaWZyYW1lO1xuICAgICAgICAgIF90aGlzLl9vcmlnaW5hbEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgIHN3YXBDYWxsYmFja3MoZWxlbWVudCwgaWZyYW1lKTtcbiAgICAgICAgICBwbGF5ZXJNYXAuc2V0KF90aGlzLmVsZW1lbnQsIF90aGlzKTtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH1cbiAgICB9KTsgLy8gU3RvcmUgYSBjb3B5IG9mIHRoaXMgUGxheWVyIGluIHRoZSBtYXBcblxuICAgIHJlYWR5TWFwLnNldCh0aGlzLCByZWFkeVByb21pc2UpO1xuICAgIHBsYXllck1hcC5zZXQodGhpcy5lbGVtZW50LCB0aGlzKTsgLy8gU2VuZCBhIHBpbmcgdG8gdGhlIGlmcmFtZSBzbyB0aGUgcmVhZHkgcHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIGlmXG4gICAgLy8gdGhlIHBsYXllciBpcyBhbHJlYWR5IHJlYWR5LlxuXG4gICAgaWYgKHRoaXMuZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lGUkFNRScpIHtcbiAgICAgIHBvc3RNZXNzYWdlKHRoaXMsICdwaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHNjcmVlbmZ1bGwuaXNFbmFibGVkKSB7XG4gICAgICB2Y
10130XIgZXhpdEZ1bGxzY3JlZW4gPSBmdW5jdGlvbiBleGl0RnVsbHNjcmVlbigpIHtcbiAgICAgICAgcmV0dXJuIHNjcmVlbmZ1bGwuZXhpdCgpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgc3RvcmVDYWxsYmFjayhfdGhpcywgJ2V2ZW50OmV4aXRGdWxsc2NyZWVuJywgZXhpdEZ1bGxzY3JlZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNhbGxiYWNrKF90aGlzLCAnZXZlbnQ6ZXhpdEZ1bGxzY3JlZW4nLCBleGl0RnVsbHNjcmVlbik7XG4gICAgICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cblxuICAgICAgICBfdGhpcy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBvc3RNZXNzYWdlKF90aGlzLCAnZnVsbHNjcmVlbmNoYW5nZScsIHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBzY3JlZW5mdWxsLm9uKCdmdWxsc2NyZWVuY2hhbmdlJywgdGhpcy5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHByb21pc2UgZm9yIGEgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgQVBJIG1ldGhvZCB0byBjYWxsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2FyZ3M9e31dIEFyZ3VtZW50cyB0byBzZW5kIHZpYSBwb3N0TWVzc2FnZS5cbiAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoUGxheWVyLCBbe1xuICAgIGtleTogXCJjYWxsTWV0aG9kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhbGxNZXRob2QobmFtZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIHJldHVybiBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIC8vIFdlIGFyZSBzdG9yaW5nIHRoZSByZXNvbHZlL3JlamVjdCBoYW5kbGVycyB0byBjYWxsIGxhdGVyLCBzbyB3ZVxuICAgICAgICAvLyBjYW7igJl0IHJldHVybiBoZXJlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuXG4gICAgICAgIHJldHVybiBfdGhpczIucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzdG9yZUNhbGxiYWNrKF90aGlzMiwgbmFtZSwge1xuICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcG9zdE1lc3NhZ2UoX3RoaXMyLCBuYW1lLCBhcmdzKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgYSBwcm9taXNlIGZvciB0aGUgdmFsdWUgb2YgYSBwbGF5ZXIgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgcHJvcGVydHkgbmFtZVxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IG5wb19zcmMoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBuYW1lID0gZ2V0TWV0aG9kTmFtZShuYW1lLCAnZ2V0Jyk7IC8vIFdlIGFyZSBzdG9yaW5nIHRoZSByZXNvbHZlL3JlamVjdCBoYW5kbGVycyB0byBjYWxsIGxhdGVyLCBzbyB3ZVxuICAgICAgICAvLyBjYW7igJl0IHJldHVybiBoZXJlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9hbHdheXMtcmV0dXJuXG5cbiAgICAgICAgcmV0dXJuIF90aGlzMy5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHN0b3JlQ2FsbGJhY2soX3RoaXMzLCBuYW1lLCB7XG4gICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwb3N0TWVzc2FnZShfdGhpczMsIG5hbWUpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBhIHByb21pc2UgZm9yIHNldHRpbmcgdGhlIHZhbHVlIG9mIGEgcGxheWVyIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIEFQSSBtZXRob2QgdG8gY2FsbC5cbiAgICAgKiBAcGFyYW0ge21peGVkfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgICB2Y
10130XIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgcmV0dXJuIG5ldyBucG9fc3JjKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgbmFtZSA9IGdldE1ldGhvZE5hbWUobmFtZSwgJ3NldCcpO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlcmUgbXVzdCBiZSBhIHZhbHVlIHRvIHNldC4nKTtcbiAgICAgICAgfSAvLyBXZSBhcmUgc3RvcmluZyB0aGUgcmVzb2x2ZS9yZWplY3QgaGFuZGxlcnMgdG8gY2FsbCBsYXRlciwgc28gd2VcbiAgICAgICAgLy8gY2Fu4oCZdCByZXR1cm4gaGVyZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvYWx3YXlzLXJldHVyblxuXG5cbiAgICAgICAgcmV0dXJuIF90aGlzNC5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHN0b3JlQ2FsbGJhY2soX3RoaXM0LCBuYW1lLCB7XG4gICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwb3N0TWVzc2FnZShfdGhpczQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuIFdpbGwgY2FsbCB0aGVcbiAgICAgKiBjYWxsYmFjayB3aXRoIGEgc2luZ2xlIHBhcmFtZXRlciwgYGRhdGFgLCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhIGZvclxuICAgICAqIHRoYXQgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopfSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBldmVudCBmaXJlcy5cbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwib25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb24oZXZlbnROYW1lLCBjYWxsYmFjaykge1xuICAgICAgaWYgKCFldmVudE5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBldmVudCBuYW1lLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYSBjYWxsYmFjayBmdW5jdGlvbi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgICAgfVxuXG4gICAgICB2Y
10130XIgY2FsbGJhY2tzID0gZ2V0Q2FsbGJhY2tzKHRoaXMsIFwiZXZlbnQ6XCIuY29uY2F0KGV2ZW50TmFtZSkpO1xuXG4gICAgICBpZiAoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNhbGxNZXRob2QoJ2FkZEV2ZW50TGlzdGVuZXInLCBldmVudE5hbWUpLmNhdGNoKGZ1bmN0aW9uICgpIHsvLyBJZ25vcmUgdGhlIGVycm9yLiBUaGVyZSB3aWxsIGJlIGFuIGVycm9yIGV2ZW50IGZpcmVkIHRoYXRcbiAgICAgICAgICAvLyB3aWxsIHRyaWdnZXIgdGhlIGVycm9yIGNhbGxiYWNrIGlmIHRoZXkgYXJlIGxpc3RlbmluZy5cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHN0b3JlQ2FsbGJhY2sodGhpcywgXCJldmVudDpcIi5jb25jYXQoZXZlbnROYW1lKSwgY2FsbGJhY2spO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnQuIFdpbGwgcmVtb3ZlIGFsbFxuICAgICAqIGxpc3RlbmVycyBmb3IgdGhhdCBldmVudCBpZiBhIGBjYWxsYmFja2AgaXNu4oCZdCBwYXNzZWQsIG9yIG9ubHkgdGhhdFxuICAgICAqIHNwZWNpZmljIGNhbGxiYWNrIGlmIGl0IGlzIHBhc3NlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10gVGhlIHNwZWNpZmljIGNhbGxiYWNrIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwib2ZmXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9mZihldmVudE5hbWUsIGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWV2ZW50TmFtZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGFuIGV2ZW50IG5hbWUuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhc3RDYWxsYmFjayA9IHJlbW92ZUNhbGxiYWNrKHRoaXMsIFwiZXZlbnQ6XCIuY29uY2F0KGV2ZW50TmFtZSksIGNhbGxiYWNrKTsgLy8gSWYgdGhlcmUgYXJlIG5vIGNhbGxiYWNrcyBsZWZ0LCByZW1vdmUgdGhlIGxpc3RlbmVyXG5cbiAgICAgIGlmIChsYXN0Q2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5jYWxsTWV0aG9kKCdyZW1vdmVFdmVudExpc3RlbmVyJywgZXZlbnROYW1lKS5jYXRjaChmdW5jdGlvbiAoZSkgey8vIElnbm9yZSB0aGUgZXJyb3IuIFRoZXJlIHdpbGwgYmUgYW4gZXJyb3IgZXZlbnQgZmlyZWQgdGhhdFxuICAgICAgICAgIC8vIHdpbGwgdHJpZ2dlciB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBhcmUgbGlzdGVuaW5nLlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGxvYWQgYSBuZXcgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBMb2FkVmlkZW9Qcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHZpZGVvIHdpdGggdGhpcyBpZCBvciB1cmwgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cbiAgICAgKiBAcmVqZWN0IHtUeXBlRXJyb3J9IFRoZSBpZCB3YXMgbm90IGEgbnVtYmVyLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogTG9hZCBhIG5ldyB2aWRlbyBpbnRvIHRoaXMgZW1iZWQuIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVzb2x2ZWQgaWZcbiAgICAgKiB0aGUgdmlkZW8gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCwgb3IgaXQgd2lsbCBiZSByZWplY3RlZCBpZiBpdCBjb3VsZFxuICAgICAqIG5vdCBiZSBsb2FkZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd8b2JqZWN0fSBvcHRpb25zIFRoZSBpZCBvZiB0aGUgdmlkZW8sIHRoZSB1cmwgb2YgdGhlIHZpZGVvLCBvciBhbiBvYmplY3Qgd2l0aCBlbWJlZCBvcHRpb25zLlxuICAgICAqIEByZXR1cm4ge0xvYWRWaWRlb1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJsb2FkVmlkZW9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZFZpZGVvKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2xvYWRWaWRlbycsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGVyZm9ybSBhbiBhY3Rpb24gd2hlbiB0aGUgUGxheWVyIGlzIHJlYWR5LlxuICAgICAqXG4gICAgICogQHRvZG8gZG9jdW1lbnQgZXJyb3JzXG4gICAgICogQHByb21pc2UgTG9hZFZpZGVvUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHt2b2lkfVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlciBhIGZ1bmN0aW9uIHdoZW4gdGhlIHBsYXllciBpZnJhbWUgaGFzIGluaXRpYWxpemVkLiBZb3UgZG8gbm90XG4gICAgICogbmVlZCB0byB3YWl0IGZvciBgcmVhZHlgIHRvIHRyaWdnZXIgdG8gYmVnaW4gYWRkaW5nIGV2ZW50IGxpc3RlbmVyc1xuICAgICAqIG9yIGNhbGxpbmcgb3RoZXIgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1JlYWR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlYWR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWR5KCkge1xuICAgICAgdmFyIHJlYWR5UHJvbWlzZSA9IHJlYWR5TWFwLmdldCh0aGlzKSB8fCBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vua25vd24gcGxheWVyLiBQcm9iYWJseSB1bmxvYWRlZC4nKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBucG9fc3JjLnJlc29sdmUocmVhZHlQcm9taXNlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGFkZCBhIGN1ZSBwb2ludCB0byB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgQWRkQ3VlUG9pbnRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGlkIG9mIHRoZSBjdWUgcG9pbnQgdG8gdXNlIGZvciByZW1vdmVDdWVQb2ludC5cbiAgICAgKiBAcmVqZWN0IHtSYW5nZUVycm9yfSB0aGUgdGltZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZVxuICAgICAqICAgICAgICAgdmlkZW/igJlzIGR1cmF0aW9uLlxuICAgICAqIEByZWplY3Qge1Vuc3VwcG9ydGVkRXJyb3J9IEN1ZSBwb2ludHMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgY3VycmVudFxuICAgICAqICAgICAgICAgcGxheWVyIG9yIGJyb3dzZXIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBjdWUgcG9pbnQgdG8gdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIFRoZSB0aW1lIGZvciB0aGUgY3VlIHBvaW50LlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbZGF0YV0gQXJiaXRyYXJ5IGRhdGEgdG8gYmUgcmV0dXJuZWQgd2l0aCB0aGUgY3VlIHBvaW50LlxuICAgICAqIEByZXR1cm4ge0FkZEN1ZVBvaW50UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFkZEN1ZVBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZEN1ZVBvaW50KHRpbWUpIHtcbiAgICAgIHZhciBkYXRhID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIHJldHVybi
10130B0aGlzLmNhbGxNZXRob2QoJ2FkZEN1ZVBvaW50Jywge1xuICAgICAgICB0aW1lOiB0aW1lLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHJlbW92ZSBhIGN1ZSBwb2ludCBmcm9tIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBBZGRDdWVQb2ludFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7c3RyaW5nfSBUaGUgaWQgb2YgdGhlIGN1ZSBwb2ludCB0aGF0IHdhcyByZW1vdmVkLlxuICAgICAqIEByZWplY3Qge0ludmFsaWRDdWVQb2ludH0gVGhlIGN1ZSBwb2ludCB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgd2FzIG5vdFxuICAgICAqICAgICAgICAgZm91bmQuXG4gICAgICogQHJlamVjdCB7VW5zdXBwb3J0ZWRFcnJvcn0gQ3VlIHBvaW50cyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhIGN1ZSBwb2ludCBmcm9tIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgaWQgb2YgdGhlIGN1ZSBwb2ludCB0byByZW1vdmUuXG4gICAgICogQHJldHVybiB7UmVtb3ZlQ3VlUG9pbnRQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlQ3VlUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlQ3VlUG9pbnQoaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ3JlbW92ZUN1ZVBvaW50JywgaWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgdGV4dCB0cmFjayBvbiBhIHZpZGVvLlxuICAgICAqXG4gICAgICogQHR5cGVkZWYge09iamVjdH0gVmltZW9UZXh0VHJhY2tcbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gbGFuZ3VhZ2UgVGhlIElTTyBsYW5ndWFnZSBjb2RlLlxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBraW5kIFRoZSBraW5kIG9mIHRyYWNrIGl0IGlzIChjYXB0aW9ucyBvciBzdWJ0aXRsZXMpLlxuICAgICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBsYWJlbCBUaGUgaHVtYW7igJByZWFkYWJsZSBsYWJlbCBmb3IgdGhlIHRyYWNrLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGVuYWJsZSBhIHRleHQgdHJhY2suXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBFbmFibGVUZXh0VHJhY2tQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvVGV4dFRyYWNrfSBUaGUgdGV4dCB0cmFjayB0aGF0IHdhcyBlbmFibGVkLlxuICAgICAqIEByZWplY3Qge0ludmFsaWRUcmFja0xhbmd1YWdlRXJyb3J9IE5vIHRyYWNrIHdhcyBhdmFpbGFibGUgd2l0aCB0aGVcbiAgICAgKiAgICAgICAgIHNwZWNpZmllZCBsYW5ndWFnZS5cbiAgICAgKiBAcmVqZWN0IHtJbnZhbGlkVHJhY2tFcnJvcn0gTm8gdHJhY2sgd2FzIGF2YWlsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWRcbiAgICAgKiAgICAgICAgIGxhbmd1YWdlIGFuZCBraW5kLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHRoZSB0ZXh0IHRyYWNrIHdpdGggdGhlIHNwZWNpZmllZCBsYW5ndWFnZSwgYW5kIG9wdGlvbmFsbHkgdGhlXG4gICAgICogc3BlY2lmaWVkIGtpbmQgKGNhcHRpb25zIG9yIHN1YnRpdGxlcykuXG4gICAgICpcbiAgICAgKiBXaGVuIHNldCB2aWEgdGhlIEFQSSwgdGhlIHRyYWNrIGxhbmd1YWdlIHdpbGwgbm90IGNoYW5nZSB0aGUgdmlld2Vy4oCZc1xuICAgICAqIHN0b3JlZCBwcmVmZXJlbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIFRoZSB0d2/igJBsZXR0ZXIgbGFuZ3VhZ2UgY29kZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tpbmRdIFRoZSBraW5kIG9mIHRyYWNrIHRvIGVuYWJsZSAoY2FwdGlvbnMgb3Igc3VidGl0bGVzKS5cbiAgICAgKiBAcmV0dXJuIHtFbmFibGVUZXh0VHJhY2tQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZW5hYmxlVGV4dFRyYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuYWJsZVRleHRUcmFjayhsYW5ndWFnZSwga2luZCkge1xuICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGEgbGFuZ3VhZ2UuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2VuYWJsZVRleHRUcmFjaycsIHtcbiAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgICAgICBraW5kOiBraW5kXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGRpc2FibGUgdGhlIGFjdGl2ZSB0ZXh0IHRyYWNrLlxuICAgICAqXG4gICAgICogQHByb21pc2UgRGlzYWJsZVRleHRUcmFja1Byb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7dm9pZH0gVGhlIHRyYWNrIHdhcyBkaXNhYmxlZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgdGhlIGN1cnJlbnRseS1hY3RpdmUgdGV4dCB0cmFjay5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0Rpc2FibGVUZXh0VHJhY2tQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZGlzYWJsZVRleHRUcmFja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkaXNhYmxlVGV4dFRyYWNrKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgnZGlzYWJsZVRleHRUcmFjaycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGF1c2UgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgUGF1c2VQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3ZvaWR9IFRoZSB2aWRlbyB3YXMgcGF1c2VkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogUGF1c2UgdGhlIHZpZGVvIGlmIGl04oCZcyBwbGF5aW5nLlxuICAgICAqXG4gICAgICogQHJldHVybiB7UGF1c2VQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCdwYXVzZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gcGxheSB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBQbGF5UHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHt2b2lkfSBUaGUgdmlkZW8gd2FzIHBsYXllZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFBsYXkgdGhlI
10130HZpZGVvIGlmIGl04oCZcyBwYXVzZWQuICoqTm90ZToqKiBvbiBpT1MgYW5kIHNvbWUgb3RoZXJcbiAgICAgKiBtb2JpbGUgZGV2aWNlcywgeW91IGNhbm5vdCBwcm9ncmFtbWF0aWNhbGx5IHRyaWdnZXIgcGxheS4gT25jZSB0aGVcbiAgICAgKiB2aWV3ZXIgaGFzIHRhcHBlZCBvbiB0aGUgcGxheSBidXR0b24gaW4gdGhlIHBsYXllciwgaG93ZXZlciwgeW91XG4gICAgICogd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGlzIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybiB7UGxheVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCdwbGF5Jyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGVudGVycyBmdWxsc2NyZWVuLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZXF1ZXN0RnVsbHNjcmVlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXF1ZXN0RnVsbHNjcmVlbigpIHtcbiAgICAgIGlmIChzY3JlZW5mdWxsLmlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gc2NyZWVuZnVsbC5yZXF1ZXN0KHRoaXMuZWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ3JlcXVlc3RGdWxsc2NyZWVuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGV4aXRzIGZ1bGxzY3JlZW4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImV4aXRGdWxsc2NyZWVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGV4aXRGdWxsc2NyZWVuKCkge1xuICAgICAgaWYgKHNjcmVlbmZ1bGwuaXNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBzY3JlZW5mdWxsLmV4aXQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgnZXhpdEZ1bGxzY3JlZW4nKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF5ZXIgaXMgY3VycmVudGx5IGZ1bGxzY3JlZW4uXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEZ1bGxzY3JlZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RnVsbHNjcmVlbigpIHtcbiAgICAgIGlmIChzY3JlZW5mdWxsLmlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gbnBvX3NyYy5yZXNvbHZlKHNjcmVlbmZ1bGwuaXNGdWxsc2NyZWVuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdmdWxsc2NyZWVuJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlcXVlc3QgdGhhdCB0aGUgcGxheWVyIGVudGVycyBwaWN0dXJlLWluLXBpY3R1cmUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbE1ldGhvZCgncmVxdWVzdFBpY3R1cmVJblBpY3R1cmUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVxdWVzdCB0aGF0IHRoZSBwbGF5ZXIgZXhpdHMgcGljdHVyZS1pbi1waWN0dXJlLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJleGl0UGljdHVyZUluUGljdHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleGl0UGljdHVyZUluUGljdHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxNZXRob2QoJ2V4aXRQaWN0dXJlSW5QaWN0dXJlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGxheWVyIGlzIGN1cnJlbnRseSBwaWN0dXJlLWluLXBpY3R1cmUuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFBpY3R1cmVJblBpY3R1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGljdHVyZUluUGljdHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGljdHVyZUluUGljdHVyZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gdW5sb2FkIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFVubG9hZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7dm9pZH0gVGhlIHZpZGVvIHdhcyB1bmxvYWRlZC5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgcGxheWVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7VW5sb2FkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInVubG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bmxvYWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsTWV0aG9kKCd1bmxvYWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYW51cCB0aGUgcGxheWVyIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgRE9NXG4gICAgICpcbiAgICAgKiBJdCB3b24ndCBiZSB1c2FibGUgYW5kIGEgbmV3IG9uZSBzaG91bGQgYmUgY29uc3RydWN0ZWRcbiAgICAgKiAgaW4gb3JkZXIgdG8gZG8gYW55IG9wZXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBuZXcgbnBvX3NyYyhmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICByZWFkeU1hcC5kZWxldGUoX3RoaXM1KTtcbiAgICAgICAgcGxheWVyTWFwLmRlbGV0ZShfdGhpczUuZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKF90aGlzNS5fb3JpZ2luYWxFbGVtZW50KSB7XG4gICAgICAgICAgcGxheWVyTWFwLmRlbGV0ZShfdGhpczUuX29yaWdpbmFsRWxlbWVudCk7XG5cbiAgICAgICAgICBfdGhpczUuX29yaWdpbmFsRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdmltZW8taW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfdGhpczUuZWxlbWVudCAmJiBfdGhpczUuZWxlbWVudC5ub2RlTmFtZSA9PT0gJ0lGUkFNRScgJiYgX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgIC8vIElmIHdlJ3ZlIGFkZGVkIGFuIGFkZGl0aW9uYWwgd3JhcHBlciBkaXYsIHJlbW92ZSB0aGF0IGZyb20gdGhlIERPTS5cbiAgICAgICAgICAvLyBJZiBub3QsIGp1c3QgcmVtb3ZlIHRoZSBpZnJhbWUgZWxlbWVudC5cbiAgICAgICAgICBpZiAoX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICE9PSBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXM1LmVsZW1lbnQucGFyZW50Tm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzNS5lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXM1LmVsZW1lbnQpO1xuICAgICAgICAgI
10130H1cbiAgICAgICAgfSAvLyBJZiB0aGUgY2xpcCBpcyBwcml2YXRlIHRoZXJlIGlzIGEgY2FzZSB3aGVyZSB0aGUgZWxlbWVudCBzdGF5cyB0aGVcbiAgICAgICAgLy8gZGl2IGVsZW1lbnQuIERlc3Ryb3kgc2hvdWxkIHJlc2V0IHRoZSBkaXYgYW5kIHJlbW92ZSB0aGUgaWZyYW1lIGNoaWxkLlxuXG5cbiAgICAgICAgaWYgKF90aGlzNS5lbGVtZW50ICYmIF90aGlzNS5lbGVtZW50Lm5vZGVOYW1lID09PSAnRElWJyAmJiBfdGhpczUuZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgX3RoaXM1LmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXZpbWVvLWluaXRpYWxpemVkJyk7XG5cbiAgICAgICAgICB2YXIgaWZyYW1lID0gX3RoaXM1LmVsZW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG5cbiAgICAgICAgICBpZiAoaWZyYW1lICYmIGlmcmFtZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSd2ZSBhZGRlZCBhbiBhZGRpdGlvbmFsIHdyYXBwZXIgZGl2LCByZW1vdmUgdGhhdCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAvLyBJZiBub3QsIGp1c3QgcmVtb3ZlIHRoZSBpZnJhbWUgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChpZnJhbWUucGFyZW50Tm9kZS5wYXJlbnROb2RlICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICYmIF90aGlzNS5fb3JpZ2luYWxFbGVtZW50ICE9PSBpZnJhbWUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICBpZnJhbWUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFtZS5wYXJlbnROb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXM1Ll93aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIF90aGlzNS5fb25NZXNzYWdlKTtcblxuICAgICAgICBpZiAoc2NyZWVuZnVsbC5pc0VuYWJsZWQpIHtcbiAgICAgICAgICBzY3JlZW5mdWxsLm9mZignZnVsbHNjcmVlbmNoYW5nZScsIF90aGlzNS5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldEF1dG9wYXVzZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Ym9vbGVhbn0gV2hldGhlciBhdXRvcGF1c2UgaXMgdHVybmVkIG9uIG9yIG9mZi5cbiAgICAgKiBAcmVqZWN0IHtVbnN1cHBvcnRlZEVycm9yfSBBdXRvcGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIGZvciB0aGlzIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldEF1dG9wYXVzZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRBdXRvcGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QXV0b3BhdXNlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdhdXRvcGF1c2UnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgYXV0b3BhdXNlIGJlaGF2aW9yIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldEF1dG9wYXVzZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Ym9vbGVhbn0gV2hldGhlciBhdXRvcGF1c2UgaXMgdHVybmVkIG9uIG9yIG9mZi5cbiAgICAgKiBAcmVqZWN0IHtVbnN1cHBvcnRlZEVycm9yfSBBdXRvcGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50XG4gICAgICogICAgICAgICBwbGF5ZXIgb3IgYnJvd3Nlci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvcGF1c2UgYmVoYXZpb3Igb2YgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB3aGVuIGFub3RoZXIgdmlkZW8gaXMgcGxheWVkIGluIHRoZSBzYW1lIGJyb3dzZXIsIHRoaXNcbiAgICAgKiBwbGF5ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlLiBVbmxlc3MgeW91IGhhdmUgYSBzcGVjaWZpYyByZWFzb25cbiAgICAgKiBmb3IgZG9pbmcgc28sIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBsZWF2ZSBhdXRvcGF1c2Ugc2V0IHRvIHRoZVxuICAgICAqIGRlZmF1bHQgKGB0cnVlYCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG9wYXVzZVxuICAgICAqIEByZXR1cm4ge1NldEF1dG9wYXVzZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRBdXRvcGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXV0b3BhdXNlKGF1dG9wYXVzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0KCdhdXRvcGF1c2UnLCBhdXRvcGF1c2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBidWZmZXJlZCBwcm9wZXJ0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRCdWZmZXJlZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IEJ1ZmZlcmVkIFRpbWVyYW5nZXMgY29udmVydGVkIHRvIGFuIEFycmF5LlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBidWZmZXJlZCBwcm9wZXJ0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRCdWZmZXJlZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRCdWZmZXJlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCdWZmZXJlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnYnVmZmVyZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHR5cGVkZWYge09iamVjdH0gQ2FtZXJhUHJvcGVydGllc1xuICAgICAqIEBwcm9wIHtudW1iZXJ9IHByb3BzLnlhdyAtIE51bWJlciBiZXR3ZWVuIDAgYW5kIDM2MC5cbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwcm9wcy5waXRjaCAtIE51bWJlciBiZXR3ZWVuIC05MCBhbmQgOTAuXG4gICAgICogQHByb3Age251bWJlcn0gcHJvcHMucm9sbCAtIE51bWJlciBiZXR3ZWVuIC0xODAgYW5kIDE4MC5cbiAgICAgKiBAcHJvcCB7bnVtYmVyfSBwcm9wcy5mb3YgLSBUaGUgZmllbGQgb2YgdmlldyBpbiBkZWdyZWVzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgY2FtZXJhIHByb3BlcnRpZXMgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldENhbWVyYVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7Q2FtZXJhUHJvcGVydGllc30gVGhlIGNhbWVyYSBwcm9wZXJ0aWVzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogRm9yIDM2MMKwIHZpZGVvcyBnZXQgdGhlIGNhbWVyYSBwcm9wZXJ0aWVzIGZvciB0aGlzIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldENhbWVyYVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDYW1lcmFQcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDYW1lcmFQcm9wcygpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLmdldCgnY2FtZXJhUHJvcHMnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY2FtZXJhIHByb3BlcnRpZXMgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldENhbWVyYVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7T2JqZWN0fSBUaGUgY2FtZXJhIHdhcyBzdWNjZXNzZnVsbHkgc2V0LlxuICAgICAqIEByZWplY3Qge1JhbmdlRXJyb3J9IFRoZSByYW5nZSB3YXMgb3V0IG9mIGJvdW5kcy5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEZvciAzNjDCsCB2aWRlb3Mgc2V0IHRoZSBjYW1lcmEgcHJvcGVydGllcyBmb3IgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0NhbWVyYVByb3BlcnRpZXN9IGNhbWVyYSBUaGUgY2FtZXJhIHByb3BlcnRpZXNcbiAgICAgKiBAcmV0dXJuIHtTZXRDYW1lcmFQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2FtZXJhUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q2FtZXJhUHJvcHMoY2FtZXJhKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ2NhbWVyYVByb3BzJywgY2FtZXJhKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSByZXByZXNlbnRhdGlvbiBvZiBhIGNoYXB0ZXIuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBWaW1lb0NoYXB0ZXJcbiAgICAgKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRUaW1lIFRoZSBzdGFydCB0aW1lIG9mIHRoZSBjaGFwdGVyLlxuICAgICAqIEBwcm9wZXJ0eSB7b2JqZWN0fSB0aXRsZSBUaGUgdGl0bGUgb2YgdGhlIGNoYXB0ZXIuXG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IGluZGV4IFRoZSBwbGFjZSBpbiB0aGUgb3JkZXIgb2YgQ2hhcHRlcnMuIFN0YXJ0cyBhdCAxLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCBjaGFwdGVycyBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q2hhcHRlcnNQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvQ2hhcHRlcltdfSBUaGUgY2hhcHRlcnMgZm9yIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBhcnJheSBvZiBhbGwgdGhlIGNoYXB0ZXJzIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDaGFwdGVyc1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDaGFwdGVyc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDaGFwdGVycygpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY2hhcHRlcnMnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgY3VycmVudGx5IGFjdGl2ZSBjaGFwdGVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q3VycmVudENoYXB0ZXJzUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtWaW1lb0NoYXB0ZXJ8dW5kZWZpbmVkfSBUaGUgY3VycmVudCBjaGFwdGVyIGZvciB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2hhcHRlciBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0Q3VycmVudENoYXB0ZXJzUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEN1cnJlbnRDaGFwdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEN1cnJlbnRDaGFwdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjdXJyZW50Q2hhcHRlcicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjb2xvciBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q29sb3JQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGhleCBjb2xvciBvZiB0aGUgcGxheWVyLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjb2xvciBmb3IgdGhpcyBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDb2xvclByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb2xvcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY29sb3InKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY29sb3Igb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldENvbG9yUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtzdHJpbmd9IFRoZSBjb2xvciB3YXMgc3VjY2Vzc2Z1bGx5IHNldC5cbiAgICAgKiBAcmVqZWN0IHtUeXBlRXJyb3J9IFRoZSBzdHJpbmcgd2FzIG5vdCBhIHZhbGlkIGhleCBvciByZ2IgY29sb3IuXG4gICAgICogQHJlamVjdCB7Q29udHJhc3RFcnJvcn0gVGhlIGNvbG9yIHdhcyBzZXQsIGJ1dCB0aGUgY29udHJhc3QgaXNcbiAgICAgKiAgICAgICAgIG91dHNpZGUgb2YgdGhlIGFjY2VwdGFibGUgcmFuZ2UuXG4gICAgICogQHJlamVjdCB7RW1iZWRTZXR0aW5nc0Vycm9yfSBUaGUgb3duZXIgb2YgdGhlIHBsYXllciBoYXMgY2hvc2VuIHRvXG4gICAgICogICAgICAgICB1c2UgYSBzcGVjaWZpYyBjb2xvci5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIFNldCB0aGUgY29sb3Igb2YgdGhpcyBwbGF5ZXIgdG8gYSBoZXggb3IgcmdiIHN0cmluZy4gU2V0dGluZyB0aGVcbiAgICAgKiBjb2xvciBtYXkgZmFpbCBpZiB0aGUgb3duZXIgb2YgdGhlIHZpZGVvIGhhcyBzZXQgdGhlaXIgZW1iZWRcbiAgICAgKiBwcmVmZXJlbmNlcyB0byBmb3JjZSBhIHNwZWNpZmljIGNvbG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIFRoZSBoZXggb3IgcmdiIGNvbG9yIHN0cmluZyB0byBzZXQuXG4gICAgICogQHJldHVybiB7U2V0Q29sb3JQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29sb3IoY29sb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgnY29sb3InLCBjb2xvcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBjdWUgcG9pbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZWRlZiB7T2JqZWN0fSBWaW1lb0N1ZVBvaW50XG4gICAgICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWUgVGhlIHRpbWUgb2YgdGhlIGN1ZSBwb2ludC5cbiAgICAgKiBAcHJvcGVydHkge29iamVjdH0gZGF0YSBUaGUgZGF0YSBwYXNzZWQgd2hlbiBhZGRpbmcgdGhlIGN1ZSBwb2ludC5cbiAgICAgKiBAcHJvcGVydHkge3N0cmluZ30gaWQgVGhlIHVuaXF1ZSBpZCBmb3IgdXNlIHdpdGggcmVtb3ZlQ3VlUG9pbnQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjdWUgcG9pbnRzIG9mIGEgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRDdWVQb2ludHNQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge1ZpbWVvQ3VlUG9pbnRbXX0gVGhlIGN1ZSBwb2ludHMgYWRkZWQgdG8gdGhlIHZpZGVvLlxuICAgICAqIEByZWplY3Qge1Vuc3VwcG9ydGVkRXJyb3J9IEN1ZSBwb2ludHMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgY3VycmVudFxuICAgICAqICAgICAgICAgcGxheWVyIG9yIGJyb3dzZXIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYW4gYXJyYXkgb2YgdGhlIGN1ZSBwb2ludHMgYWRkZWQgdG8gdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybi
10130B7R2V0Q3VlUG9pbnRzUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEN1ZVBvaW50c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdWVQb2ludHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ2N1ZVBvaW50cycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0Q3VycmVudFRpbWVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGluIHNlY29uZHMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRDdXJyZW50VGltZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50VGltZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnY3VycmVudFRpbWUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIHNldCB0aGUgY3VycmVudCB0aW1lIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldEN1cnJlbnRUaW1lUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBhY3R1YWwgY3VycmVudCB0aW1lIHRoYXQgd2FzIHNldC5cbiAgICAgKiBAcmVqZWN0IHtSYW5nZUVycm9yfSB0aGUgdGltZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZVxuICAgICAqICAgICAgICAgdmlkZW/igJlzIGR1cmF0aW9uLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHBsYXliYWNrIHBvc2l0aW9uIGluIHNlY29uZHMuIElmIHRoZSBwbGF5ZXIgd2FzXG4gICAgICogcGF1c2VkLCBpdCB3aWxsIHJlbWFpbiBwYXVzZWQuIExpa2V3aXNlLCBpZiB0aGUgcGxheWVyIHdhcyBwbGF5aW5nLFxuICAgICAqIGl0IHdpbGwgcmVzdW1lIHBsYXlpbmcgb25jZSB0aGUgdmlkZW8gaGFzIGJ1ZmZlcmVkLlxuICAgICAqXG4gICAgICogWW91IGNhbiBwcm92aWRlIGFuIGFjY3VyYXRlIHRpbWUgYW5kIHRoZSBwbGF5ZXIgd2lsbCBhdHRlbXB0IHRvIHNlZWtcbiAgICAgKiB0byBhcyBjbG9zZSB0byB0aGF0IHRpbWUgYXMgcG9zc2libGUuIFRoZSBleGFjdCB0aW1lIHdpbGwgYmUgdGhlXG4gICAgICogZnVsZmlsbGVkIHZhbHVlIG9mIHRoZSBwcm9taXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRUaW1lXG4gICAgICogQHJldHVybiB7U2V0Q3VycmVudFRpbWVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgnY3VycmVudFRpbWUnLCBjdXJyZW50VGltZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGR1cmF0aW9uIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldER1cmF0aW9uUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBkdXJhdGlvbiBvZiB0aGUgdmlkZW8gaW4gc2Vjb25kcy4gSXQgd2lsbCBiZSByb3VuZGVkIHRvIHRoZVxuICAgICAqIG5lYXJlc3Qgc2Vjb25kIGJlZm9yZSBwbGF5YmFjayBiZWdpbnMsIGFuZCB0byB0aGUgbmVhcmVzdCB0aG91c2FuZHRoXG4gICAgICogb2YgYSBzZWNvbmQgYWZ0ZXIgcGxheWJhY2sgYmVnaW5zLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0RHVyYXRpb25Qcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ2R1cmF0aW9uJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGVuZGVkIHN0YXRlIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldEVuZGVkUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgdmlkZW8gaGFzIGVuZGVkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBlbmRlZCBzdGF0ZSBvZiB0aGUgdmlkZW8uIFRoZSB2aWRlbyBoYXMgZW5kZWQgaWZcbiAgICAgKiBgY3VycmVudFRpbWUgPT09IGR1cmF0aW9uYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldEVuZGVkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEVuZGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVuZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdlbmRlZCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgcGxheWVyIGlzIHNldCB0byBsb29wLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRMb29wUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldExvb3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9vcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnbG9vcCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSBsb29wIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBTZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBUaGUgbG9vcCBzdGF0ZSB0aGF0IHdhcyBzZXQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGxvb3Agc3RhdGUgb2YgdGhlIHBsYXllci4gV2hlbiBzZXQgdG8gYHRydWVgLCB0aGUgcGxheWVyXG4gICAgICogd2lsbCBzdGFydCBvdmVyIGltbWVkaWF0ZWx5IG9uY2UgcGxheWJhY2sgZW5kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9vcFxuICAgICAqIEByZXR1cm4ge1NldExvb3BQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9vcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb29wKGxvb3ApIHtcbiAgICAgIHJldHVybi
10130B0aGlzLnNldCgnbG9vcCcsIGxvb3ApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0TXV0ZWRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFRoZSBtdXRlZCBzdGF0ZSB0aGF0IHdhcyBzZXQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuIFdoZW4gc2V0IHRvIGB0cnVlYCwgdGhlIHBsYXllclxuICAgICAqIHZvbHVtZSB3aWxsIGJlIG11dGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSBtdXRlZFxuICAgICAqIEByZXR1cm4ge1NldE11dGVkUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldE11dGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE11dGVkKG11dGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ211dGVkJywgbXV0ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBtdXRlZCBzdGF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0TXV0ZWRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBwbGF5ZXIgaXMgbXV0ZWQuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG11dGVkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRNdXRlZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRNdXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNdXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnbXV0ZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcGF1c2VkIHN0YXRlIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRMb29wUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgdmlkZW8gaXMgcGF1c2VkLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXVzZWQgc3RhdGUgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldExvb3BQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGF1c2VkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBhdXNlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGF1c2VkJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFBsYXliYWNrUmF0ZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSAwLjUgdG8gMi5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGxheWJhY2sgcmF0ZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSBgMC41YCB0byBgMmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRQbGF5YmFja1JhdGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UGxheWJhY2tSYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBsYXliYWNrUmF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncGxheWJhY2tSYXRlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBzZXQgdGhlIHBsYXliYWNrcmF0ZSBvZiB0aGUgcGxheWVyLlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0UGxheWJhY2tSYXRlUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBwbGF5YmFjayByYXRlIHdhcyBzZXQuXG4gICAgICogQHJlamVjdCB7UmFuZ2VFcnJvcn0gVGhlIHBsYXliYWNrIHJhdGUgd2FzIGxlc3MgdGhhbiAwLjUgb3IgZ3JlYXRlciB0aGFuIDIuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHBsYXliYWNrIHJhdGUgb2YgdGhlIHBsYXllciBvbiBhIHNjYWxlIGZyb20gYDAuNWAgdG8gYDJgLiBXaGVuIHNldFxuICAgICAqIHZpYSB0aGUgQVBJLCB0aGUgcGxheWJhY2sgcmF0ZSB3aWxsIG5vdCBiZSBzeW5jaHJvbml6ZWQgdG8gb3RoZXJcbiAgICAgKiBwbGF5ZXJzIG9yIHN0b3JlZCBhcyB0aGUgdmlld2VyJ3MgcHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwbGF5YmFja1JhdGVcbiAgICAgKiBAcmV0dXJuIHtTZXRQbGF5YmFja1JhdGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UGxheWJhY2tSYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBsYXliYWNrUmF0ZShwbGF5YmFja1JhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldCgncGxheWJhY2tSYXRlJywgcGxheWJhY2tSYXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcGxheWVkIHByb3BlcnR5IG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFBsYXllZFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IFBsYXllZCBUaW1lcmFuZ2VzIGNvbnZlcnRlZCB0byBhbiBBcnJheS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGxheWVkIHByb3BlcnR5IG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFBsYXllZFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRQbGF5ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGxheWVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdwbGF5ZWQnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgcXVhbGl0aWVzIGF2YWlsYWJsZSBvZiB0aGUgY3VycmVudCB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFF1YWxpdGllc1Byb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7QXJyYXl9IFRoZSBxdWFsaXRpZXMgb2YgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBxdWFsaXRpZXMgb2YgdGhlIGN1cnJlbnQgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRRdWFsaXRpZXNQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UXVhbGl0aWVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFF1YWxpdGllcygpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLmdldCgncXVhbGl0aWVzJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIGN1cnJlbnQgc2V0IHF1YWxpdHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0UXVhbGl0eVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7c3RyaW5nfSBUaGUgY3VycmVudCBzZXQgcXVhbGl0eS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCBzZXQgcXVhbGl0eSBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRRdWFsaXR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFF1YWxpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UXVhbGl0eSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgncXVhbGl0eScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSB2aWRlbyBxdWFsaXR5LlxuICAgICAqXG4gICAgICogQHByb21pc2UgU2V0UXVhbGl0eVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgcXVhbGl0eSB3YXMgc2V0LlxuICAgICAqIEByZWplY3Qge1JhbmdlRXJyb3J9IFRoZSBxdWFsaXR5IGlzIG5vdCBhdmFpbGFibGUuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgYSB2aWRlbyBxdWFsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHF1YWxpdHlcbiAgICAgKiBAcmV0dXJuIHtTZXRRdWFsaXR5UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFF1YWxpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UXVhbGl0eShxdWFsaXR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXQoJ3F1YWxpdHknLCBxdWFsaXR5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgc2Vla2FibGUgcHJvcGVydHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0U2Vla2FibGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge0FycmF5fSBTZWVrYWJsZSBUaW1lcmFuZ2VzIGNvbnZlcnRlZCB0byBhbiBBcnJheS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2Vla2FibGUgcHJvcGVydHkgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0U2Vla2FibGVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vla2FibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2Vla2FibGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3NlZWthYmxlJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHNlZWtpbmcgcHJvcGVydHkgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFNlZWtpbmdQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge2Jvb2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBwbGF5ZXIgaXMgY3VycmVudGx5IHNlZWtpbmcuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgaWYgdGhlIHBsYXllciBpcyBjdXJyZW50bHkgc2Vla2luZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFNlZWtpbmdQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vla2luZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWVraW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdzZWVraW5nJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHRleHQgdHJhY2tzIG9mIGEgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRUZXh0VHJhY2tzUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtWaW1lb1RleHRUcmFja1tdfSBUaGUgdGV4dCB0cmFja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBhcnJheSBvZiB0aGUgdGV4dCB0cmFja3MgdGhhdCBleGlzdCBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0VGV4dFRyYWNrc1Byb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRUZXh0VHJhY2tzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRleHRUcmFja3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3RleHRUcmFja3MnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgZW1iZWQgY29kZSBmb3IgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0VmlkZW9FbWJlZENvZGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge3N0cmluZ30gVGhlIGA8aWZyYW1lPmAgZW1iZWQgY29kZSBmb3IgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBgPGlmcmFtZT5gIGVtYmVkIGNvZGUgZm9yIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvRW1iZWRDb2RlUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZGVvRW1iZWRDb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvRW1iZWRDb2RlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0VtYmVkQ29kZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSBpZCBvZiB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWaWRlb0lkUHJvbWlzZVxuICAgICAqIEBmdWxmaWxsIHtudW1iZXJ9IFRoZSBpZCBvZiB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGlkIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvSWRQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VmlkZW9JZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb0lkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0lkJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIHRpdGxlIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFZpZGVvVGl0bGVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHRpdGxlIG9mIHRoZSB2aWRlby5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgdGl0bGUgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHJldHVybi
10130B7R2V0VmlkZW9UaXRsZVByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWRlb1RpdGxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvVGl0bGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3ZpZGVvVGl0bGUnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgbmF0aXZlIHdpZHRoIG9mIHRoZSB2aWRlby5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIEdldFZpZGVvV2lkdGhQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIG5hdGl2ZSB3aWR0aCBvZiB0aGUgdmlkZW8uXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIG5hdGl2ZSB3aWR0aCBvZiB0aGUgY3VycmVudGx54oCQcGxheWluZyB2aWRlby4gVGhlIHdpZHRoIG9mXG4gICAgICogdGhlIGhpZ2hlc3TigJByZXNvbHV0aW9uIGF2YWlsYWJsZSB3aWxsIGJlIHVzZWQgYmVmb3JlIHBsYXliYWNrIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvV2lkdGhQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VmlkZW9XaWR0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb1dpZHRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb1dpZHRoJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgcHJvbWlzZSB0byBnZXQgdGhlIG5hdGl2ZSBoZWlnaHQgb2YgdGhlIHZpZGVvLlxuICAgICAqXG4gICAgICogQHByb21pc2UgR2V0VmlkZW9IZWlnaHRQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIG5hdGl2ZSBoZWlnaHQgb2YgdGhlIHZpZGVvLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBuYXRpdmUgaGVpZ2h0IG9mIHRoZSBjdXJyZW50bHnigJBwbGF5aW5nIHZpZGVvLiBUaGUgaGVpZ2h0IG9mXG4gICAgICogdGhlIGhpZ2hlc3TigJByZXNvbHV0aW9uIGF2YWlsYWJsZSB3aWxsIGJlIHVzZWQgYmVmb3JlIHBsYXliYWNrIGJlZ2lucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0dldFZpZGVvSGVpZ2h0UHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZGVvSGVpZ2h0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZpZGVvSGVpZ2h0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd2aWRlb0hlaWdodCcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gZ2V0IHRoZSB2aW1lby5jb20gdXJsIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWaWRlb1VybFByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgdmltZW8uY29tIHVybCBmb3IgdGhlIHZpZGVvLlxuICAgICAqIEByZWplY3Qge1ByaXZhY3lFcnJvcn0gVGhlIHVybCBpc27igJl0IGF2YWlsYWJsZSBiZWNhdXNlIG9mIHRoZSB2aWRlb+KAmXMgcHJpdmFjeSBzZXR0aW5nLlxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB2aW1lby5jb20gdXJsIGZvciB0aGUgdmlkZW8uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtHZXRWaWRlb1VybFByb21pc2V9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRWaWRlb1VybFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWRlb1VybCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgndmlkZW9VcmwnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBwcm9taXNlIHRvIGdldCB0aGUgdm9sdW1lIGxldmVsIG9mIHRoZSBwbGF5ZXIuXG4gICAgICpcbiAgICAgKiBAcHJvbWlzZSBHZXRWb2x1bWVQcm9taXNlXG4gICAgICogQGZ1bGZpbGwge251bWJlcn0gVGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDEuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdm9sdW1lIGxldmVsIG9mIHRoZSBwbGF5ZXIgb24gYSBzY2FsZSBmcm9tIGAwYCB0byBgMWAuXG4gICAgICpcbiAgICAgKiBNb3N0IG1vYmlsZSBkZXZpY2VzIGRvIG5vdCBzdXBwb3J0IGFuIGluZGVwZW5kZW50IHZvbHVtZSBmcm9tIHRoZVxuICAgICAqIHN5c3RlbSB2b2x1bWUuIEluIHRob3NlIGNhc2VzLCB0aGlzIG1ldGhvZCB3aWxsIGFsd2F5cyByZXR1cm4gYDFgLlxuICAgICAqXG4gICAgICogQHJldHVybiB7R2V0Vm9sdW1lUHJvbWlzZX1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWb2x1bWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXQoJ3ZvbHVtZScpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIHByb21pc2UgdG8gc2V0IHRoZSB2b2x1bWUgbGV2ZWwgb2YgdGhlIHBsYXllci5cbiAgICAgKlxuICAgICAqIEBwcm9taXNlIFNldFZvbHVtZVByb21pc2VcbiAgICAgKiBAZnVsZmlsbCB7bnVtYmVyfSBUaGUgdm9sdW1lIHdhcyBzZXQuXG4gICAgICogQHJlamVjdCB7UmFuZ2VFcnJvcn0gVGhlIHZvbHVtZSB3YXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIDEuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHZvbHVtZSBvZiB0aGUgcGxheWVyIG9uIGEgc2NhbGUgZnJvbSBgMGAgdG8gYDFgLiBXaGVuIHNldFxuICAgICAqIHZpYSB0aGUgQVBJLCB0aGUgdm9sdW1lIGxldmVsIHdpbGwgbm90IGJlIHN5bmNocm9uaXplZCB0byBvdGhlclxuICAgICAqIHBsYXllcnMgb3Igc3RvcmVkIGFzIHRoZSB2aWV3ZXLigJlzIHByZWZlcmVuY2UuXG4gICAgICpcbiAgICAgKiBNb3N0IG1vYmlsZSBkZXZpY2VzIGRvIG5vdCBzdXBwb3J0IHNldHRpbmcgdGhlIHZvbHVtZS4gQW4gZXJyb3Igd2lsbFxuICAgICAqICpub3QqIGJlIHRyaWdnZXJlZCBpbiB0aGF0IHNpdHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2b2x1bWVcbiAgICAgKiBAcmV0dXJuIHtTZXRWb2x1bWVQcm9taXNlfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZSh2b2x1bWUpIHtcbiAgICAgIHJldHVybi
10130B0aGlzLnNldCgndm9sdW1lJywgdm9sdW1lKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGxheWVyO1xufSgpOyAvLyBTZXR1cCBlbWJlZCBvbmx5IGlmIHRoaXMgaXMgbm90IGEgbm9kZSBlbnZpcm9ubWVudFxuXG5cbmlmICghaXNOb2RlKSB7XG4gIHNjcmVlbmZ1bGwgPSBpbml0aWFsaXplU2NyZWVuZnVsbCgpO1xuICBpbml0aWFsaXplRW1iZWRzKCk7XG4gIHJlc2l6ZUVtYmVkcygpO1xuICBpbml0QXBwZW5kVmlkZW9NZXRhZGF0YSgpO1xufVxuXG5jbGFzcyBWaW1lb1BsYXllciBleHRlbmRzIEFic3RyYWN0VmlkZW9QbGF5ZXIge1xuICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHRhcmdldCwgdmlkZW9JZCwgb3B0aW9ucyk7XG4gICAgdGhpcy5zdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICB9XG4gIGNyZWF0ZVBsYXllcih2aWRlb0lkKSB7XG4gICAgY29uc3QgeyBvcHRpb25zLCBvcHRpb25zOiB7IHBsYXllck9wdGlvbnMgPSB7fSB9IH0gPSB0aGlzO1xuICAgIGNvbnN0IHZpbWVvT3B0aW9ucyA9IHZpZGVvSWQuaW5kZXhPZihcImh0dHBcIikgPT09IDAgPyB7IHVybDogdmlkZW9JZCB9IDogeyBpZDogK3ZpZGVvSWQgfTtcbiAgICBjb25zdCBwbGF5ZXIgPSBuZXcgUGxheWVyJDEodGhpcy50YXJnZXQsIGFzc2lnbih2aW1lb09wdGlvbnMsIHtcbiAgICAgIGNvbnRyb2xzOiAhb3B0aW9ucy5oaWRlQ29udHJvbHMsXG4gICAgICBsb29wOiBvcHRpb25zLmxvb3AsXG4gICAgICBtdXRlZDogb3B0aW9ucy5tdXRlXG4gICAgfSwgcGxheWVyT3B0aW9ucy52aW1lbyB8fCB7fSkpO1xuICAgIHBsYXllci5vbihcInBsYXlcIiwgdGhpcy5vblBsYXkpO1xuICAgIHBsYXllci5vbihcInBhdXNlXCIsIHRoaXMub25QYXVzZSk7XG4gICAgcGxheWVyLm9uKFwiZW5kZWRcIiwgdGhpcy5vbkVuZGVkKTtcbiAgICBwbGF5ZXIucmVhZHkoKS50aGVuKHRoaXMub25QbGF5ZXJSZWFkeSwgdGhpcy5vbkVycm9yKTtcbiAgICBpZiAoIXBsYXllci5nZXRNdXRlZCgpKSB7XG4gICAgICBwbGF5ZXIuc2V0Vm9sdW1lKGNsYW1wKG9wdGlvbnMudm9sdW1lLCAwLCAxKSk7XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXI7XG4gIH1cbiAgcGxheVZpZGVvKCkge1xuICAgIHRoaXMucGxheWVyLnBsYXkoKS5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5pcyhQTEFZX1JFUVVFU1RfQUJPUlRFRCkpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoSURMRSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcGF1c2VWaWRlbygpIHtcbiAgICB0aGlzLnBsYXllci5wYXVzZSgpO1xuICB9XG59XG5cbmNvbnN0IFlPVVRVQkVfQVBJX1NSQyA9IFwiLy93d3cueW91dHViZS5jb20vcGxheWVyX2FwaVwiO1xuY2xhc3MgWW91VHViZUlmcmFtZUFQSUxvYWRlciB7XG4gIGxvYWQoY2FsbGJhY2spIHtcbiAgICBpZiAod2luZG93LllUICYmIGlzRnVuY3Rpb24od2luZG93LllULlBsYXllcikpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICB0aGlzLmF0dGFjaENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICBpZiAodGhpcy5zaG91bGRMb2FkKCkpIHtcbiAgICAgIGNyZWF0ZShcInNjcmlwdFwiLCB7IHNyYzogYCR7bG9jYXRpb24ucHJvdG9jb2x9JHtZT1VUVUJFX0FQSV9TUkN9YCB9LCBkb2N1bWVudC5oZWFkKTtcbiAgICB9XG4gIH1cbiAgc2hvdWxkTG9hZCgpIHtcbiAgICByZXR1cm4gIXF1ZXJ5QWxsKGRvY3VtZW50LCBcInNjcmlwdFwiKS5zb21lKChzY3JpcHQpID0+IHNjcmlwdC5zcmMucmVwbGFjZSgvXmh0dHBzPzovLCBcIlwiKSA9PT0gWU9VVFVCRV9BUElfU1JDKTtcbiAgfVxuICBhdHRhY2hDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIGxldCBvbGRDYWxsYmFjaztcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHdpbmRvdy5vbllvdVR1YmVJZnJhbWVBUElSZWFkeSkpIHtcbiAgICAgIG9sZENhbGxiYWNrID0gd2luZG93Lm9uWW91VHViZUlmcmFtZUFQSVJlYWR5O1xuICAgIH1cbiAgICB3aW5kb3cub25Zb3VUdWJlSWZyYW1lQVBJUmVhZHkgPSAoKSA9PiB7XG4gICAgICBvbGRDYWxsYmFjayAmJiBvbGRDYWxsYmFjaygpO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFlvdVR1YmVQbGF5ZXIgZXh0ZW5kcyBBYnN0cmFjdFZpZGVvUGxheWVyIHtcbiAgY29uc3RydWN0b3IodGFyZ2V0LCB2aWRlb0lkLCBvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih0YXJnZXQsIHZpZGVvSWQsIG9wdGlvbnMpO1xuICAgIHRoaXMudmlkZW9JZCA9IHRoaXMucGFyc2VWaWRlb0lkKHZpZGVvSWQpO1xuICAgIGlmICh0aGlzLnZpZGVvSWQpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0KElOSVRJQUxJWklORyk7XG4gICAgICBuZXcgWW91VHViZUlmcmFtZUFQSUxvYWRlcigpLmxvYWQodGhpcy5vbkFQSVJlYWR5LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuICBvbkFQSVJlYWR5KCkge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgaXNQZW5kaW5nID0gc3RhdGUuaXMoUEVORElOR19QTEFZKTtcbiAgICBzdGF0ZS5zZXQoSU5JVElBTElaRUQpO1xuICAgIGlmIChpc1BlbmRpbmcpIHtcbiAgICAgIHRoaXMucGxheSgpO1xuICAgIH1cbiAgfVxuICBjcmVhdGVQbGF5ZXIodmlkZW9JZCkge1xuICAgIGNvbnN0IHsgb3B0aW9ucywgb3B0aW9uczogeyBwbGF5ZXJPcHRpb25zID0ge30gfSB9ID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFlULlBsYXllcih0aGlzLnRhcmdldCwge1xuICAgICAgdmlkZW9JZCxcbiAgICAgIGhvc3Q6IG9wdGlvbnMuaG9zdCxcbiAgICAgIHBsYXllclZhcnM6IGFzc2lnbih7XG4gICAgICAgIGNvbnRyb2xzOiBvcHRpb25zLmhpZGVDb250cm9scyA/IDAgOiAxLFxuICAgICAgICBpdl9sb2FkX3BvbGljeTogMyxcbiAgICAgICAgbG9vcDogb3B0aW9ucy5sb29wID8gMSA6IDAsXG4gICAgICAgIHBsYXlsaXN0OiBvcHRpb25zLmxvb3AgPyB2aWRlb0lkIDogdm9pZCAwLFxuICAgICAgICByZWw6IDAsXG4gICAgICAgIGF1dG9wbGF5OiAwLFxuICAgICAgICBtdXRlOiBvcHRpb25zLm11dGUgPyAxIDogMFxuICAgICAgfSwgcGxheWVyT3B0aW9ucy55b3V0dWJlIHx8IHt9KSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBvblJlYWR5OiB0aGlzLm9uUGxheWVyUmVhZHkuYmluZCh0aGlzKSxcbiAgICAgICAgb25TdGF0ZUNoYW5nZTogdGhpcy5vblBsYXllclN0YXRlQ2hhbmdlLmJpbmQodGhpcyksXG4gICAgICAgIG9uRXJyb3I6IHRoaXMub25FcnJvci5iaW5kKHRoaXMpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgb25QbGF5ZXJSZWFkeSgpIHtcbiAgICBzdXBlci5vblBsYXllclJlYWR5KCk7XG4gICAgdGhpcy5wbGF5ZXIuc2V0Vm9sdW1lKGNsYW1wKHRoaXMub3B0aW9ucy52b2x1bWUsIDAsIDEpICogMTAwKTtcbiAgfVxuICBvblBsYXllclN0YXRlQ2hhbmdlKGUpIHtcbiAgICBjb25zdCB7IFBMQVlJTkcsIFBBVVNFRCwgRU5ERUQgfSA9IFlULlBsYXllclN0YXRlO1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSBlLmRhdGEgPT09IFBMQVlJTkc6XG4gICAgICAgI
10130HRoaXMub25QbGF5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBlLmRhdGEgPT09IFBBVVNFRDpcbiAgICAgICAgdGhpcy5vblBhdXNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBlLmRhdGEgPT09IEVOREVEOlxuICAgICAgICB0aGlzLm9uRW5kZWQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHBsYXlWaWRlbygpIHtcbiAgICB0aGlzLnBsYXllci5wbGF5VmlkZW8oKTtcbiAgfVxuICBwYXVzZVZpZGVvKCkge1xuICAgIHRoaXMucGxheWVyLnBhdXNlVmlkZW8oKTtcbiAgfVxuICBwYXJzZVZpZGVvSWQoaWQpIHtcbiAgICByZXR1cm4gaWQuaW5kZXhPZihcImh0dHBcIikgPT09IDAgPyB0aGlzLnBhcnNlVXJsKGlkKSA6IGlkO1xuICB9XG4gIHBhcnNlVXJsKHVybCkge1xuICAgIGNvbnN0IFssIHNlYXJjaF0gPSB1cmwuc3BsaXQoL1sjP10vKTtcbiAgICBjb25zdCBxdWVyeSA9IGZpbmQoc2VhcmNoLnNwbGl0KFwiJlwiKSwgKHF1ZXJ5MikgPT4gcXVlcnkyLmluZGV4T2YoXCJ2PVwiKSA9PT0gMCk7XG4gICAgcmV0dXJuIHF1ZXJ5ICYmIHF1ZXJ5LnJlcGxhY2UoXCJ2PVwiLCBcIlwiKTtcbiAgfVxufVxuXG5jb25zdCBJMThOID0ge1xuICBwbGF5VmlkZW86IFwiUGxheSBWaWRlb1wiXG59O1xuXG5jbGFzcyBQbGF5ZXJVSSB7XG4gIGNvbnN0cnVjdG9yKFNwbGlkZTIsIHNsaWRlKSB7XG4gICAgdGhpcy5ldmVudCA9IEV2ZW50SW50ZXJmYWNlKCk7XG4gICAgdGhpcy5TcGxpZGUgPSBTcGxpZGUyO1xuICAgIHRoaXMuc2xpZGUgPSBzbGlkZTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNoaWxkKHRoaXMuc2xpZGUsIGAuJHtDTEFTU19DT05UQUlORVJ9YCk7XG4gICAgdGhpcy5wYXJlbnQgPSB0aGlzLmNvbnRhaW5lciB8fCB0aGlzLnNsaWRlO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMuY3JlYXRlKCk7XG4gICAgdGhpcy5zaG93KCk7XG4gICAgdGhpcy5saXN0ZW4oKTtcbiAgfVxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuc2xpZGUsIGAke0NMQVNTX1NMSURFfSR7TU9ESUZJRVJfSEFTX1ZJREVPfWApO1xuICAgIGFkZENsYXNzKHRoaXMuY29udGFpbmVyLCBgJHtDTEFTU19DT05UQUlORVJ9JHtNT0RJRklFUl9IQVNfVklERU99YCk7XG4gIH1cbiAgY3JlYXRlKCkge1xuICAgIHRoaXMudmlkZW8gPSBjcmVhdGUoXCJkaXZcIiwgQ0xBU1NfVklERU8sIHRoaXMucGFyZW50KTtcbiAgICB0aGlzLnBsYXlCdXR0b24gPSBjcmVhdGUoXCJidXR0b25cIiwge1xuICAgICAgY2xhc3M6IENMQVNTX1ZJREVPX1BMQVlfQlVUVE9OLFxuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiB0aGlzLlNwbGlkZS5vcHRpb25zLmkxOG4ucGxheVZpZGVvIHx8IEkxOE4ucGxheVZpZGVvXG4gICAgfSwgdGhpcy52aWRlbyk7XG4gICAgdGhpcy53cmFwcGVyID0gY3JlYXRlKFwiZGl2XCIsIENMQVNTX1ZJREVPX1dSQVBQRVIsIHR
10130oaXMudmlkZW8pO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSBjcmVhdGUoXCJkaXZcIiwgbnVsbCwgdGhpcy53cmFwcGVyKTtcbiAgfVxuICBsaXN0ZW4oKSB7XG4gICAgdGhpcy5wYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnQuZW1pdChcImNsaWNrXCIpO1xuICAgIH0pO1xuICB9XG4gIHRvZ2dsZUJ1dHRvbihzaG93KSB7XG4gICAgZGlzcGxheSh0aGlzLnBsYXlCdXR0b24sIHNob3cgPyBcIlwiIDogXCJub25lXCIpO1xuICB9XG4gIHRvZ2dsZVdyYXBwZXIoc2hvdykge1xuICAgIGRpc3BsYXkodGhpcy53cmFwcGVyLCBzaG93ID8gXCJcIiA6IFwibm9uZVwiKTtcbiAgfVxuICBnZXRQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuICBoaWRlKCkge1xuICAgIHRoaXMudG9nZ2xlQnV0dG9uKGZhbHNlKTtcbiAgICB0aGlzLnRvZ2dsZVdyYXBwZXIodHJ1ZSk7XG4gIH1cbiAgc2hvdygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudG9nZ2xlQnV0dG9uKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZVdyYXBwZXIoZmFsc2UpO1xuICB9XG4gIGRpc2FibGUoZGlzYWJsZWQpIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZUJ1dHRvbihmYWxzZSk7XG4gICAgfVxuICB9XG4gIG9uKGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICB0aGlzLmV2ZW50Lm9uKGV2ZW50cywgY2FsbGJhY2spO1xuICB9XG4gIGRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlQ2xhc3ModGhpcy5zbGlkZSwgYCR7Q0xBU1NfU0xJREV9JHtNT0RJRklFUl9IQVNfVklERU99YCk7XG4gICAgcmVtb3ZlQ2xhc3ModGhpcy5jb250YWluZXIsIGAke0NMQVNTX0NPTlRBSU5FUn0ke01PRElGSUVSX0hBU19WSURFT31gKTtcbiAgICByZW1vdmUodGhpcy52aWRlbyk7XG4gICAgdGhpcy5ldmVudC5kZXN0cm95KCk7XG4gIH1cbn1cblxuY29uc3QgVklERU9fUExBWUVSX01BUCA9IFtcbiAgW1lPVVRVQkVfREFUQV9BVFRSSUJVVEUsIFlvdVR1YmVQbGF5ZXJdLFxuICBbVklNRU9fREFUQV9BVFRSSUJVVEUsIFZpbWVvUGxheWVyXSxcbiAgW0hUTUxfVklERU9fX0RBVEFfQVRUUklCVVRFLCBIVE1MVmlkZW9QbGF5ZXJdXG5dO1xuY2xhc3MgUGxheWVyIHtcbiAgY29uc3RydWN0b3IoU3BsaWRlMiwgc2xpZGUpIHtcbiAgICB0aGlzLlNwbGlkZSA9IFNwbGlkZTI7XG4gICAgdGhpcy5zbGlkZSA9IHNsaWRlO1xuICAgIHRoaXMuZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZShtZXJnZSh7fSwgREVGQVVMVFMpLCB0aGlzLlNwbGlkZS5vcHRpb25zLnZpZGVvKTtcbiAgICB0aGlzLmNyZWF0ZVBsYXllcihzbGlkZSk7XG4gICAgaWYgKHRoaXMucGxheWVyKSB7XG4gICAgICB0aGlzLmxpc3RlbigpO1xuICAgIH1cbiAgfVxuICBjcmVhdGVQbGF5ZXIoc2xpZGUpIHtcbiAgICBWSURFT19QTEFZRVJfTUFQLmZvckVhY2goKFthdHRyLCBDb25zdHJ1Y3Rvcl0pID0+IHtcbiAgICAgIGNvbnN0IGlkID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBhdHRyKTtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICB0aGlzLnVpID0gbmV3IFBsYXllclVJKHRoaXMuU3BsaWRlLCBzbGlkZSk7XG4gICAgICAgIHRoaXMucGxheWVyID0gbmV3IENvbnN0cnVjdG9yKHRoaXMudWkuZ2V0UGxhY2Vob2xkZXIoKSwgaWQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMudWkuZGlzYWJsZSh0aGlzLm9wdGlvbnMuZGlzYWJsZU92ZXJsYXlVSSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbGlzdGVuKCkge1xuICAgIGNvbnN0IHsgcGxheWVyLCBldmVudCB9ID0gdGhpcztcbiAgICB0aGlzLnVpLm9uKFwiY2xpY2tcIiwgdGhpcy5vbkNsaWNrLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcInBsYXlcIiwgdGhpcy5vblBsYXkuYmluZCh0aGlzKSk7XG4gICAgcGxheWVyLm9uKFwicGxheWVkXCIsIHRoaXMub25QbGF5ZWQuYmluZCh0aGlzKSk7XG4gICAgcGxheWVyLm9uKFwicGF1c2VcIiwgdGhpcy5vblBhdXNlLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcInBhdXNlZFwiLCB0aGlzLm9uUGF1c2VkLmJpbmQodGhpcykpO1xuICAgIHBsYXllci5vbihcImVuZGVkXCIsIHRoaXMub25FbmRlZC5iaW5kKHRoaXMpKTtcbiAgICBwbGF5ZXIub24oXCJlcnJvclwiLCB0aGlzLm9uRXJyb3IuYmluZCh0aGlzKSk7XG4gICAgZXZlbnQub24oW0VWRU5UX01PVkUsIEVWRU5UX1NDUk9MTF0sIHRoaXMucGF1c2UuYmluZCh0aGlzKSk7XG4gICAgZXZlbnQub24oRVZFTlRfVklERU9fQ0xJQ0ssIHRoaXMub25WaWRlb0NsaWNrLmJpbmQodGhpcykpO1xuICAgIGV2ZW50Lm9uKEVWRU5UX0RSQUcsICgpID0+IHtcbiAgICAgIGV2ZW50Lm9mZihFVkVOVF9EUkFHR0lORyk7XG4gICAgICBldmVudC5vbihFVkVOVF9EUkFHR0lORywgKCkgPT4ge1xuICAgICAgICB0aGlzLnBhdXNlKCk7XG4gICAgICAgIGV2ZW50Lm9mZihFVkVOVF9EUkFHR0lORyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9wbGF5KSB7XG4gICAgICBldmVudC5vbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRUQsIEVWRU5UX1NDUk9MTEVEXSwgdGhpcy5vbkF1dG9wbGF5UmVxdWVzdGVkLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuICBvbkNsaWNrKCkge1xuICAgIHRoaXMuaXNQYXVzZWQoKSA/IHRoaXMucGxheSgpIDogdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19DTElDSywgdGhpcyk7XG4gIH1cbiAgb25WaWRlb0NsaWNrKHBsYXllcikge1xuICAgIGlmICh0aGlzICE9PSBwbGF5ZXIpIHtcbiAgICAgIHRoaXMucGF1c2UoKTtcbiAgICB9XG4gIH1cbiAgb25QbGF5KCkge1xuICAgIHRoaXMudWkuaGlkZSgpO1xuICB9XG4gIG9uUGxheWVkKCkge1xuICAgIHRoaXMudWkuaGlkZSgpO1xuICAgIHRoaXMudG9nZ2xlUGxheWluZyh0cnVlKTtcbiAgICB0aGlzLmV2ZW50LmVtaXQo
10130RVZFTlRfVklERU9fUExBWSwgdGhpcyk7XG4gIH1cbiAgb25QYXVzZSgpIHtcbiAgICB0aGlzLnVpLnNob3coKTtcbiAgfVxuICBvblBhdXNlZCgpIHtcbiAgICB0aGlzLnRvZ2dsZVBsYXlpbmcoZmFsc2UpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19QQVVTRSwgdGhpcyk7XG4gIH1cbiAgb25FbmRlZCgpIHtcbiAgICB0aGlzLnRvZ2dsZVBsYXlpbmcoZmFsc2UpO1xuICAgIHRoaXMuZXZlbnQuZW1pdChFVkVOVF9WSURFT19FTkRFRCwgdGhpcyk7XG4gIH1cbiAgb25FcnJvcigpIHtcbiAgICBhZGRDbGFzcyh0aGlzLnNsaWRlLCBDTEFTU19FUlJPUik7XG4gICAgdGhpcy51aS5zaG93KCk7XG4gICAgdGhpcy5ldmVudC5lbWl0KEVWRU5UX1ZJREVPX0VSUk9SLCB0aGlzKTtcbiAgfVxuICBvbkF1dG9wbGF5UmVxdWVzdGVkKCkge1xuICAgIGNvbnN0IGFjdGl2ZVNsaWRlID0gdGhpcy5TcGxpZGUuQ29tcG9uZW50cy5TbGlkZXMuZ2V0QXQodGhpcy5TcGxpZGUuaW5kZXgpO1xuICAgIGlmIChhY3RpdmVTbGlkZS5zbGlkZSA9PT0gdGhpcy5zbGlkZSkge1xuICAgICAgdGhpcy5wbGF5KCk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZVBsYXlpbmcoYWRkKSB7XG4gICAgdG9nZ2xlQ2xhc3ModGhpcy5TcGxpZGUucm9vdCwgQ0xBU1NfUExBWUlORywgYWRkKTtcbiAgfVxuICBwbGF5KCkge1xuICAgIGlmICh0aGlzLnBsYXllciAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5wbGF5ZXIucGxheSgpO1xuICAgIH1cbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy5wbGF5ZXIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgfVxuICB9XG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucGxheWVyKSB7XG4gICAgICB0aGlzLnVpLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMucGxheWVyLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlKGZhbHNlKTtcbiAgfVxuICBkaXNhYmxlKGRpc2FibGVkKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRvZ2dsZUNsYXNzKHRoaXMuU3BsaWRlLnJvb3QsIENMQVNTX1ZJREVPX0RJU0FCTEVELCBkaXNhYmxlZCk7XG4gIH1cbiAgaXNQYXVzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyLmlzUGF1c2VkKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVmlkZW8oU3BsaWRlMiwgQ29tcG9uZW50czIpIHtcbiAgY29uc3QgeyBvbiB9ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIGNvbnN0IHsgU2xpZGVzIH0gPSBDb21wb25lbnRzMjtcbiAgY29uc3QgcGxheWVycyA9IHt9O1xuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBjcmVhdGUoKTtcbiAgICBvbihcInJlZnJlc2hcIiwgY3JlYXRlKTtcbiAgfVxuICBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgU2xpZGVzLmZvckVhY2goKFNsaWRlKSA9PiB7XG4gICAgICBjb25zdCB7IHNsaWRlIH0gPSBTbGlkZTtcbiAgICAgIGlmICghaGFzQ2xhc3Moc2xpZGUsIGAke0NMQVNTX1NMSURFfSR7TU9ESUZJRVJfSEFTX1ZJREVPfWApKSB7XG4gICAgICAgIHBsYXllcnNbU2xpZGUuaW5kZXhdID0gbmV3IFBsYXllcihTcGxpZGUyLCBzbGlkZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgU2xpZGVzLnVwZGF0ZSgpO1xuICB9XG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgZm9yT3duKHBsYXllcnMsIChwbGF5ZXIpID0+IHtcbiAgICAgIHBsYXllci5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcGxheShpbmRleCA9IFNwbGlkZTIuaW5kZXgpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJzW2luZGV4XTtcbiAgICBpZiAocGxheWVyKSB7XG4gICAgICBwbGF5ZXIucGxheSgpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICBmb3JPd24ocGxheWVycywgKHBsYXllcikgPT4ge1xuICAgICAgcGxheWVyLnBhdXNlKCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZGlzYWJsZShkaXNhYmxlZCkge1xuICAgIGZvck93bihwbGF5ZXJzLCAocGxheWVyKSA9PiB7XG4gICAgICBwbGF5ZXIuZGlzYWJsZShkaXNhYmxlZCk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtb3VudCxcbiAgICBkZXN0cm95LFxuICAgIHBsYXksXG4gICAgcGF1c2UsXG4gICAgZGlzYWJsZVxuICB9O1xufVxuXG5leHBvcnQgeyBWaWRlbyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tdmlkZW8vZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLXZpZGVvLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gMTQzXG4vLyBtb2R1bGUgY2h1bmtzID0gNSAyNSJdLCJzb3VyY2VSb290IjoiIn0= 10131//# sourceURL=webpack-internal:///143 10132`)},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(g,n,t){g.exports=t(223)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); 10133/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSplide", function() { return initSplide; }); 10134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "configSplide", function() { return configSplide; }); 10135/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__ = __webpack_require__(63); 10136/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator__); 10137/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify__ = __webpack_require__(224); 10138/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify__); 10139/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__splidejs_splide__ = __webpack_require__(142); 10140/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__splidejs_splide_extension_video__ = __webpack_require__(143); 10141/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__splidejs_splide_extension_grid__ = __webpack_require__(226); 10142/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__splidejs_splide_extension_auto_scroll__ = __webpack_require__(227); 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152var MIN_SLIDES_FOR_AUTOPLAY = 1; 10153 10154var enableAutoplayOnMount = function enableAutoplayOnMount(current) { 10155 current.on('mounted', function () { 10156 var hasVideo = current.root.querySelector('[data-splide-youtube], [data-splide-vimeo]'); 10157 10158 if (!hasVideo && current.length > MIN_SLIDES_FOR_AUTOPLAY) { 10159 if (current.Components.Autoplay) { 10160 current.Components.Autoplay.play(); 10161 } 10162 } 10163 }); 10164}; 10165 10166var handleVideoEnded = function handleVideoEnded(current) {
10167 current.on('video:ended', function () { 10168 var videoElement = current.root.querySelector('.splide__slide--has-video .splide__video'); 10169 10170 current.Components.Video.disable(true); 10171 10172 if (videoElement) { 10173 videoElement.style.display = 'none'; 10174 } 10175 10176 if (current.Components.Autoplay) { 10177 current.Components.Autoplay.play(); 10178 } 10179 10180 current.go('>'); 10181 }); 10182}; 10183 10184var videoImage = function videoImage(current) { 10185 enableAutoplayOnMount(current); 10186 handleVideoEnded(current); 10187}; 10188 10189var getDataAttributes = function getDataAttributes(element) { 10190 return { 10191 dataSync: element.dataset.sync, 10192 dataSyncUp: element.dataset.syncUp, 10193 perPage: parseInt(element.dataset.perPage), 10194 fraction: element.dataset.fraction === 'true', 10195 autoScroll: element.dataset.autoscroll === 'true', 10196 videoCustom: element.dataset.videoCustom === 'true', 10197 itemsNumber: element.querySelector('.splide__list').children.length 10198 }; 10199}; 10200 10201var initSplideInstance = function initSplideInstance(element, attributes) { 10202 var itemsNumber = attributes.itemsNumber, 10203 perPage = attributes.perPage; 10204 10205 var band = itemsNumber > perPage; 10206 10207 return new __WEBPACK_IMPORTED_MODULE_2__splidejs_splide__["b" /* default */](element, { 10208 type: band ? 'loop' : 'slide', 10209 arrows: band, 10210 pagination: band, 10211 breakpoints: { 10212 768: { 10213 arrows: itemsNumber > 1 10214 } 10215 } 10216 }); 10217}; 10218 10219var configureSplide = function configureSplide(splide, attributes) { 10220 var bar = splide.root.querySelector('.my-carousel-progress-bar'); 10221 var extensions = { Video: __WEBPACK_IMPORTED_MODULE_3__splidejs_splide_extension_video__["a" /* Video */], Grid: __WEBPACK_IMPORTED_MODULE_4__splidejs_splide_extension_grid__["a" /* Grid */] }; 10222 10223 if (bar) { 10224 progress(splide, bar); 10225 } 10226 10227 if (attributes.fraction) { 10228 initFraction(splide); 10229 } 10230 10231 if (attributes.videoCustom) videoImage(splide); 10232 10233 if (attributes.autoScroll) { 10234 extensions.AutoScroll = __WEBPACK_IMPORTED_MODULE_5__splidejs_splide_extension_auto_scroll__["a" /* AutoScroll */]; 10235 } 10236 10237 splide.mount(extensions); 10238}; 10239 10240var syncSplides = function syncSplides(instances) { 10241 var mainVector = []; 10242 var thumbnailVector = []; 10243 10244 instances.forEach(function (element) { 10245 if (element.root.dataset.syncUp) { 10246 mainVector.push(element); 10247 } 10248 10249 if (element.root.dataset.sync) { 10250 thumbnailVector.push(element); 10251 } 10252 }); 10253 10254 if (mainVector.length === thumbnailVector.length) { 10255 mainVector.forEach(function (main, index) { 10256 var thumbnail = thumbnailVector[index]; 10257 main.sync(thumbnail); 10258 }); 10259 } 10260}; 10261 10262var progress = function progress(splide, bar) { 10263 splide.on('mounted move', function () { 10264 var end = splide.Components.Controller.getEnd() + 1; 10265 var rate = Math.min((splide.index + 1) / end, 1); 10266 bar.style.width = String(100 * rate) + '%'; 10267 }); 10268}; 10269 10270var initFraction = function initFraction(splide) { 10271 splide.on('pagination:updated', function (data) { 10272 data.list.classList.add('splide__pagination--custom'); 10273 data.list.innerHTML = '<li role="presentation">\\n <span class="splide__pagination-page pagination-fraction__current splide__pagination--current">\\n ' + (splide.index + splide.options.perPage) + '\\n </span>\\n </li>\\n <span class="pagination-fraction__line">/</span>\\n <li role="presentation">\\n <span class="splide__pagination-page pagination-fraction__total splide__pagination--total">\\n ' + splide.length + '\\n </span>\\n </li>'; 10274 }); 10275}; 10276 10277var initVideoSoundControl = function initVideoSoundControl() { 10278 var soundButtons = document.querySelectorAll('.js-sound'); 10279 10280 if (!soundButtons.length) return; 10281 10282 var toggleYouTubeSound = function toggleYouTubeSound(slide, muteIcon) { 10283 var iframe = slide.querySelector('iframe'); 10284 if (!iframe || !iframe.contentWindow) return; 10285 10286 var isMuted = muteIcon.classList.contains('is-muted'); 10287 10288 iframe.contentWindow.postMessage(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default()({ 10289 event: 'command', 10290 func: isMuted ? 'unMute' : 'mute', 10291 args: '' 10292 }), '*'); 10293 10294 if (isMuted) { 10295 muteIcon.classList.remove('is-muted'); 10296 muteIcon.classList.add('on-muted'); 10297 } else { 10298 muteIcon.classList.remove('on-muted'); 10299 muteIcon.classList.add('is-muted'); 10300 } 10301 }; 10302 10303 var toggleVimeoSound = function toggleVimeoSound(slide, muteIcon) { 10304 var iframe = slide.querySelector('iframe'); 10305 if (!iframe || !iframe.contentWindow) return; 10306 10307 var isMuted = muteIcon.classList.contains('is-muted'); 10308 10309 iframe.contentWindow.postMessage(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_json_stringify___default()({ 10310 method: 'setVolume', 10311 value: isMuted ? 1 : 0 10312 }), '*'); 10313 10314 if (isMuted) { 10315 muteIcon.classList.remove('is-muted'); 10316 muteIcon.classList.add('on-muted'); 10317 } else { 10318 muteIcon.classList.remove('on-muted'); 10319 muteIcon.classList.add('is-muted'); 10320 } 10321 }; 10322 10323 soundButtons.forEach(function (button) { 10324 button.addEventListener('click', function (e) { 10325 e.preventDefault(); 10326 e.stopPropagation(); 10327 10328 var slide = this.closest('.splide__slide'); 10329 var muteIcon = this.querySelector('.js-sound-mute'); 10330 10331 if (!slide || !muteIcon) return; 10332 10333 var isYoutube = slide.hasAttribute('data-splide-youtube'); 10334 var isVimeo = slide.hasAttribute('data-splide-vimeo'); 10335 10336 if (isYoutube) { 10337 toggleYouTubeSound(slide, muteIcon); 10338 } else if (isVimeo) { 10339 toggleVimeoSound(slide, muteIcon); 10340 } 10341 }); 10342 }); 10343}; 10344 10345var initSplide = function initSplide(element) { 10346 var attributes = getDataAttributes(element); 10347 var splide = initSplideInstance(element, attributes); 10348 configureSplide(splide, attributes); 10349 return splide; 10350}; 10351
10352var configSplide = function configSplide() { 10353 var elementsCarousel = document.getElementsByClassName('splide'); 10354 var splideInstances = []; 10355 10356 var _iteratorNormalCompletion = true; 10357 var _didIteratorError = false; 10358 var _iteratorError = undefined; 10359 10360 try { 10361 for (var _iterator = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_get_iterator___default()(elementsCarousel), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { 10362 var element = _step.value; 10363 10364 if (element.dataset.ignoreSplide === 'true') continue; 10365 var splide = initSplide(element); 10366 splideInstances.push(splide); 10367 } 10368 } catch (err) { 10369 _didIteratorError = true; 10370 _iteratorError = err; 10371 } finally { 10372 try { 10373 if (!_iteratorNormalCompletion && _iterator.return) { 10374 _iterator.return(); 10375 } 10376 } finally { 10377 if (_didIteratorError) { 10378 throw _iteratorError; 10379 } 10380 } 10381 } 10382 10383 syncSplides(splideInstances); 10384 10385 setTimeout(initVideoSoundControl, 100); 10386 10387 return splideInstances; 10388}; 10389 10390document.addEventListener('DOMContentLoaded', configSplide); 10391//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdXRpbHMvc3BsaWRlX2Nhcm91c2VsLmpzPzNkY2IiXSwibmFtZXMiOlsiTUlOX1NMSURFU19GT1JfQVVUT1BMQVkiLCJlbmFibGVBdXRvcGxheU9uTW91bnQiLCJjdXJyZW50Iiwib24iLCJoYXNWaWRlbyIsInJvb3QiLCJxdWVyeVNlbGVjdG9yIiwibGVuZ3RoIiwiQ29tcG9uZW50cyIsIkF1dG9wbGF5IiwicGxheSIsImhhbmRsZVZpZGVvRW5kZWQiLCJ2aWRlb0VsZW1lbnQiLCJWaWRlbyIsImRpc2FibGUiLCJzdHlsZSIsImRpc3BsYXkiLCJnbyIsInZpZGVvSW1hZ2UiLCJnZXREYXRhQXR0cmlidXRlcyIsImVsZW1lbnQiLCJkYXRhU3luYyIsImRhdGFzZXQiLCJzeW5jIiwiZGF0YVN5bmNVcCIsInN5bmNVcCIsInBlclBhZ2UiLCJwYXJzZUludCIsImZyYWN0aW9uIiwiYXV0b1Njcm9sbCIsImF1dG9zY3JvbGwiLCJ2aWRlb0N1c3RvbSIsIml0ZW1zTnVtYmVyIiwiY2hpbGRyZW4iLCJpbml0U3BsaWRlSW5zdGFuY2UiLCJhdHRyaWJ1dGVzIiwiYmFuZCIsIlNwbGlkZSIsInR5cGUiLCJhcnJvd3MiLCJwYWdpbmF0aW9uIiwiYnJlYWtwb2ludHMiLCJjb25maWd1cmVTcGxpZGUiLCJzcGxpZGUiLCJiYXIiLCJleHRlbnNpb25zIiwiR3JpZCIsInByb2dyZXNzIiwiaW5pdEZyYWN0aW9uIiwiQXV0b1Njcm9sbCIsIm1vdW50Iiwic3luY1NwbGlkZXMiLCJpbnN0YW5jZXMiLCJtYWluVmVjdG9yIiwidGh1bWJuYWlsVmVjdG9yIiwiZm9yRWFjaCIsInB1c2giLCJtYWluIiwiaW5kZXgiLCJ0aHVtYm5haWwiLCJlbmQiLCJDb250cm9sbGVyIiwiZ2V0RW5kIiwicmF0ZSIsIk1hdGgiLCJtaW4iLCJ3aWR0aCIsIlN0cmluZyIsImRhdGEiLCJsaXN0IiwiY2xhc3NMaXN0IiwiYWRkIiwiaW5uZXJIVE1MIiwib3B0aW9ucyIsImluaXRWaWRlb1NvdW5kQ29udHJvbCIsInNvdW5kQnV0dG9ucyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsInRvZ2dsZVlvdVR1YmVTb3VuZCIsInNsaWRlIiwibXV0ZUljb24iLCJpZnJhbWUiLCJjb250ZW50V2luZG93IiwiaXNNdXRlZCIsImNvbnRhaW5zIiwicG9zdE1lc3NhZ2UiLCJldmVudCIsImZ1bmMiLCJhcmdzIiwicmVtb3ZlIiwidG9nZ2xlVmltZW9Tb3VuZCIsIm1ldGhvZCIsInZhbHVlIiwiYnV0dG9uIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNsb3Nlc3QiLCJpc1lvdXR1YmUiLCJoYXNBdHRyaWJ1dGUiLCJpc1ZpbWVvIiwiaW5pdFNwbGlkZSIsImNvbmZpZ1NwbGlkZSIsImVsZW1lbnRzQ2Fyb3VzZWwiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwic3BsaWRlSW5zdGFuY2VzIiwiaWdub3JlU3BsaWRlIiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUEsMEJBQTBCLENBQWhDOztBQUVBLElBQU1DLHdCQUF3QixTQUF4QkEscUJBQXdCLENBQUNDLE9BQUQsRUFBYTtBQUN6Q0EsVUFBUUMsRUFBUixDQUFXLFNBQVgsRUFBc0IsWUFBTTtBQUMxQixRQUFNQyxXQUFXRixRQUFRRyxJQUFSLENBQWFDLGFBQWIsQ0FDZiw0Q0FEZSxDQUFqQjs7QUFJQSxRQUFJLENBQUNGLFFBQUQsSUFBYUYsUUFBUUssTUFBUixHQUFpQlAsdUJBQWxDLEVBQTJEO0FBQ3pELFVBQUlFLFFBQVFNLFVBQVIsQ0FBbUJDLFFBQXZCLEVBQWlDO0FBQy9CUCxnQkFBUU0sVUFBUixDQUFtQkMsUUFBbkIsQ0FBNEJDLElBQTVCO0FBQ0Q7QUFDRjtBQUNGLEdBVkQ7QUFXRCxDQVpEOztBQWNBLElBQU1DLG1CQUFtQixTQUFuQkEsZ0JBQW1CLENBQUNULE9BQUQsRUFBYTtBQUNwQ0EsVUFBUUMsRUFBUixDQUFXLGFBQVgsRUFBMEIsWUFBTTtBQUM5QixRQUFNUyxlQUFlVixRQUFRRyxJQUFSLENBQWFDLGFBQWIsQ0FDbkIsMENBRG1CLENBQXJCOztBQUlBSixZQUFRTSxVQUFSLENBQW1CSyxLQUFuQixDQUF5QkMsT0FBekIsQ0FBaUMsSUFBakM7O0FBRUEsUUFBSUYsWUFBSixFQUFrQjtBQUNoQkEsbUJBQWFHLEtBQWIsQ0FBbUJDLE9BQW5CLEdBQTZCLE1BQTdCO0FBQ0Q7O0FBRUQsUUFBSWQsUUFBUU0sVUFBUixDQUFtQkMsUUFBdkIsRUFBaUM7QUFDL0JQLGNBQVFNLFVBQVIsQ0FBbUJDLFFBQW5CLENBQTRCQyxJQUE1QjtBQUNEOztBQUVEUixZQUFRZSxFQUFSLENBQVcsR0FBWDtBQUNELEdBaEJEO0FBaUJELENBbEJEOztBQW9CQSxJQUFNQyxhQUFhLFNBQWJBLFVBQWEsQ0FBQ2hCLE9BQUQsRUFBYTtBQUM5QkQsd0JBQXNCQyxPQUF0QjtBQUNBUyxtQkFB
10391aUJULE9BQWpCO0FBQ0QsQ0FIRDs7QUFLQSxJQUFNaUIsb0JBQW9CLFNBQXBCQSxpQkFBb0IsQ0FBQ0MsT0FBRCxFQUFhO0FBQ3JDLFNBQU87QUFDTEMsY0FBVUQsUUFBUUUsT0FBUixDQUFnQkMsSUFEckI7QUFFTEMsZ0JBQVlKLFFBQVFFLE9BQVIsQ0FBZ0JHLE1BRnZCO0FBR0xDLGFBQVNDLFNBQVNQLFFBQVFFLE9BQVIsQ0FBZ0JJLE9BQXpCLENBSEo7QUFJTEUsY0FBVVIsUUFBUUUsT0FBUixDQUFnQk0sUUFBaEIsS0FBNkIsTUFKbEM7QUFLTEMsZ0JBQVlULFFBQVFFLE9BQVIsQ0FBZ0JRLFVBQWhCLEtBQStCLE1BTHRDO0FBTUxDLGlCQUFhWCxRQUFRRSxPQUFSLENBQWdCUyxXQUFoQixLQUFnQyxNQU54QztBQU9MQyxpQkFBYVosUUFBUWQsYUFBUixDQUFzQixlQUF0QixFQUF1QzJCLFFBQXZDLENBQWdEMUI7QUFQeEQsR0FBUDtBQVNELENBVkQ7O0FBWUEsSUFBTTJCLHFCQUFxQixTQUFyQkEsa0JBQXFCLENBQUNkLE9BQUQsRUFBVWUsVUFBVixFQUF5QjtBQUFBLE1BQzFDSCxXQUQwQyxHQUNqQkcsVUFEaUIsQ0FDMUNILFdBRDBDO0FBQUEsTUFDN0JOLE9BRDZCLEdBQ2pCUyxVQURpQixDQUM3QlQsT0FENkI7O0FBRWxELE1BQU1VLE9BQU9KLGNBQWNOLE9BQTNCOztBQUVBLFNBQU8sSUFBSVcsaUVBQUosQ0FBV2pCLE9BQVgsRUFBb0I7QUFDekJrQixVQUFNRixPQUFPLE1BQVAsR0FBZ0IsT0FERztBQUV6QkcsWUFBUUgsSUFGaUI7QUFHekJJLGdCQUFZSixJQUhhO0FBSXpCSyxpQkFBYTtBQUNYLFdBQUs7QUFDSEYsZ0JBQVFQLGNBQWM7QUFEbkI7QUFETTtBQUpZLEdBQXBCLENBQVA7QUFVRCxDQWREOztBQWdCQSxJQUFNVSxrQkFBa0IsU0FBbEJBLGVBQWtCLENBQUNDLE1BQUQsRUFBU1IsVUFBVCxFQUF3QjtBQUM5QyxNQUFNUyxNQUFNRCxPQUFPdEMsSUFBUCxDQUFZQyxhQUFaLENBQTBCLDJCQUExQixDQUFaO0FBQ0EsTUFBTXVDLGFBQWEsRUFBRWhDLHNGQUFGLEVBQVNpQyxtRkFBVCxFQUFuQjs7QUFFQSxNQUFJRixHQUFKLEVBQVM7QUFDUEcsYUFBU0osTUFBVCxFQUFpQkMsR0FBakI7QUFDRDs7QUFFRCxNQUFJVCxXQUFXUCxRQUFmLEVBQXlCO0FBQ3ZCb0IsaUJBQWFMLE1BQWI7QUFDRDs7QUFFRCxNQUFJUixXQUFXSixXQUFmLEVBQTRCYixXQUFXeUIsTUFBWDs7QUFFNUIsTUFBSVIsV0FBV04sVUFBZixFQUEyQjtBQUN6QmdCLGVBQVdJLFVBQVgsR0FBd0JBLDBGQUF4QjtBQUNEOztBQUVETixTQUFPTyxLQUFQLENBQWFMLFVBQWI7QUFDRCxDQW5CRDs7QUFxQkEsSUFBTU0sY0FBYyxTQUFkQSxXQUFjLENBQUNDLFNBQUQsRUFBZTtBQUNqQyxNQUFNQyxhQUFhLEVBQW5CO0FBQ0EsTUFBTUMsa0JBQWtCLEVBQXhCOztBQUVBRixZQUFVRyxPQUFWLENBQWtCLG1CQUFXO0FBQzNCLFFBQUluQyxRQUFRZixJQUFSLENBQWFpQixPQUFiLENBQXFCRyxNQUF6QixFQUFpQztBQUMvQjRCLGlCQUFXRyxJQUFYLENBQWdCcEMsT0FBaEI7QUFDRDs7QUFFRCxRQUFJQSxRQUFRZixJQUFSLENBQWFpQixPQUFiLENBQXFCQyxJQUF6QixFQUErQjtBQUM3QitCLHNCQUFnQkUsSUFBaEIsQ0FBcUJwQyxPQUFyQjtBQUNEO0FBQ0YsR0FSRDs7QUFVQSxNQUFJaUMsV0FBVzlDLE1BQVgsS0FBc0IrQyxnQkFBZ0IvQyxNQUExQyxFQUFrRDtBQUNoRDhDLGVBQVdFLE9BQVgsQ0FBbUIsVUFBQ0UsSUFBRCxFQUFPQyxLQUFQLEVBQWlCO0FBQ2xDLFVBQU1DLFlBQVlMLGdCQUFnQkksS0FBaEIsQ0FBbEI7QUFDQUQsV0FBS2xDLElBQUwsQ0FBVW9DLFNBQVY7QUFDRCxLQUhEO0FBSUQ7QUFDRixDQXBCRDs7QUFzQkEsSUFBTVosV0FBVyxTQUFYQSxRQUFXLENBQUNKLE1BQUQsRUFBU0MsR0FBVCxFQUFpQjtBQUNoQ0QsU0FBT3hDLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFlBQVk7QUFDcEMsUUFBSXlELE1BQU1qQixPQUFPbkMsVUFBUCxDQUFrQnFELFVBQWxCLENBQTZCQyxNQUE3QixLQUF3QyxDQUFsRDtBQUNBLFFBQUlDLE9BQU9DLEtBQUtDLEdBQUwsQ0FBUyxDQUFDdEIsT0FBT2UsS0FBUCxHQUFlLENBQWhCLElBQXFCRSxHQUE5QixFQUFtQyxDQUFuQyxDQUFYO0FBQ0FoQixRQUFJN0IsS0FBSixDQUFVbUQsS0FBVixHQUFrQkMsT0FBTyxNQUFNSixJQUFiLElBQXFCLEdBQXZDO0FBQ0QsR0FKRDtBQUtELENBTkQ7O0FBUUEsSUFBTWYsZUFBZSxTQUFmQSxZQUFlLENBQUNMLE1BQUQsRUFBWTtBQUMvQkEsU0FBT3hDLEVBQVAsQ0FBVSxvQkFBVixFQUFnQyxVQUFVaUUsSUFBVixFQUFnQjtBQUM5Q0EsU0FBS0MsSUFBTCxDQUFVQyxTQUFWLENBQW9CQyxHQUFwQixDQUF3Qiw0QkFBeEI7QUFDQUgsU0FBS0MsSUFBTCxDQUFVRyxTQUFWLHNKQUdRN0IsT0FBT2UsS0FBUCxHQUFlZixPQUFPOEIsT0FBUCxDQUFlL0MsT0FIdEMsZ1BBU1FpQixPQUFPcEMsTUFUZjtBQVlELEdBZEQ7QUFlRCxDQWhCRDs7QUFrQkEsSUFBTW1FLHdCQUF3QixTQUF4QkEscUJBQXdCLEdBQU07QUFDbEMsTUFBTUMsZUFBZUMsU0FBU0MsZ0JBQVQsQ0FBMEIsV0FBMUIsQ0FBckI7O0FBRUEsTUFBSSxDQUFDRixhQUFhcEUsTUFBbEIsRUFBMEI7O0FBRTFCLE1BQU11RSxxQkFBcUIsU0FBckJBLGtCQUFxQixDQUFDQyxLQUFELEVBQVFDLFFBQVIsRUFBcUI7QUFDOUMsUUFBTUMsU0FBU0YsTUFBTXpFLGFBQU4sQ0FBb0IsUUFBcEIsQ0FBZjtBQUNBLFFBQUksQ0FBQzJFLE1BQUQsSUFBVyxDQUFDQSxPQUFPQyxhQUF2QixFQUFzQzs7QUFFdEMsUUFBTUMsVUFBVUgsU0FBU1YsU0FBVCxDQUFtQmMsUUFBbkIsQ0FBNEIsVUFBNUIsQ0FBaEI7O0FBRUFILFdBQU9DLGFBQVAsQ0FBcUJHLFdBQXJCLENBQWlDLDZFQUFlO0FBQzlDQyxhQUFPLFNBRHVDO0FBRTlDQyxZQUFNSixVQUFVLFFBQVYsR0FBcUIsTUFGbUI7QUFHOUNLLFlBQU07QUFId0MsS0FBZixDQUFqQyxFQUlJLEdBSko7O0FBTUEsUUFBSUwsT0FBSixFQUFhO0FBQ1hILGVBQVNWLFNBQVQsQ0FBbUJtQixNQUFuQixDQUEwQixVQUExQjtBQUNBVCxlQUFTVixTQUFULENBQW1CQyxHQUFuQixDQUF1QixVQUF2QjtBQUNELEtBSEQsTUFHTztBQUNMUyxlQUFTVixTQUFULENBQW1CbUIsTUFBbkIsQ0FBMEIsVUFBMUI7QUFDQVQsZUFBU1YsU0FBVCxDQUFtQkMsR0FBbkIsQ0FBdUIsVUFBdkI7QUFDRDtBQUNGLEdBbkJEOztBQXFCQSxNQUFNbUIsbUJBQW1CLFNBQW5CQSxnQkFBbUIsQ0FBQ1gsS0FBRCxFQUFRQyxRQUFSLEVBQXFCO0FBQzVDLFFBQU1DLFNBQVNGLE1BQU16RSxhQUFOLENBQW9CLFFBQXBCLENBQWY7QUFDQSxRQUFJLENBQUMyRSxNQUFELElBQVcsQ0FBQ0EsT0FBT0MsYUFBdkIsRUFBc0M7O0FBRXRDL
10391FFBQU1DLFVBQVVILFNBQVNWLFNBQVQsQ0FBbUJjLFFBQW5CLENBQTRCLFVBQTVCLENBQWhCOztBQUVBSCxXQUFPQyxhQUFQLENBQXFCRyxXQUFyQixDQUFpQyw2RUFBZTtBQUM5Q00sY0FBUSxXQURzQztBQUU5Q0MsYUFBT1QsVUFBVSxDQUFWLEdBQWM7QUFGeUIsS0FBZixDQUFqQyxFQUdJLEdBSEo7O0FBS0EsUUFBSUEsT0FBSixFQUFhO0FBQ1hILGVBQVNWLFNBQVQsQ0FBbUJtQixNQUFuQixDQUEwQixVQUExQjtBQUNBVCxlQUFTVixTQUFULENBQW1CQyxHQUFuQixDQUF1QixVQUF2QjtBQUNELEtBSEQsTUFHTztBQUNMUyxlQUFTVixTQUFULENBQW1CbUIsTUFBbkIsQ0FBMEIsVUFBMUI7QUFDQVQsZUFBU1YsU0FBVCxDQUFtQkMsR0FBbkIsQ0FBdUIsVUFBdkI7QUFDRDtBQUNGLEdBbEJEOztBQW9CQUksZUFBYXBCLE9BQWIsQ0FBcUIsa0JBQVU7QUFDN0JzQyxXQUFPQyxnQkFBUCxDQUF3QixPQUF4QixFQUFpQyxVQUFVQyxDQUFWLEVBQWE7QUFDNUNBLFFBQUVDLGNBQUY7QUFDQUQsUUFBRUUsZUFBRjs7QUFFQSxVQUFNbEIsUUFBUSxLQUFLbUIsT0FBTCxDQUFhLGdCQUFiLENBQWQ7QUFDQSxVQUFNbEIsV0FBVyxLQUFLMUUsYUFBTCxDQUFtQixnQkFBbkIsQ0FBakI7O0FBRUEsVUFBSSxDQUFDeUUsS0FBRCxJQUFVLENBQUNDLFFBQWYsRUFBeUI7O0FBRXpCLFVBQU1tQixZQUFZcEIsTUFBTXFCLFlBQU4sQ0FBbUIscUJBQW5CLENBQWxCO0FBQ0EsVUFBTUMsVUFBVXRCLE1BQU1xQixZQUFOLENBQW1CLG1CQUFuQixDQUFoQjs7QUFFQSxVQUFJRCxTQUFKLEVBQWU7QUFDYnJCLDJCQUFtQkMsS0FBbkIsRUFBMEJDLFFBQTFCO0FBQ0QsT0FGRCxNQUVPLElBQUlxQixPQUFKLEVBQWE7QUFDbEJYLHlCQUFpQlgsS0FBakIsRUFBd0JDLFFBQXhCO0FBQ0Q7QUFDRixLQWpCRDtBQWtCRCxHQW5CRDtBQW9CRCxDQWxFRDs7QUFvRU8sSUFBTXNCLGFBQWEsU0FBYkEsVUFBYSxDQUFDbEYsT0FBRCxFQUFhO0FBQ3JDLE1BQU1lLGFBQWFoQixrQkFBa0JDLE9BQWxCLENBQW5CO0FBQ0EsTUFBTXVCLFNBQVNULG1CQUFtQmQsT0FBbkIsRUFBNEJlLFVBQTVCLENBQWY7QUFDQU8sa0JBQWdCQyxNQUFoQixFQUF3QlIsVUFBeEI7QUFDQSxTQUFPUSxNQUFQO0FBQ0QsQ0FMTTs7QUFPQSxJQUFNNEQsZUFBZSxTQUFmQSxZQUFlLEdBQU07QUFDaEMsTUFBTUMsbUJBQW1CNUIsU0FBUzZCLHNCQUFULENBQWdDLFFBQWhDLENBQXpCO0FBQ0EsTUFBSUMsa0JBQWtCLEVBQXRCOztBQUZnQztBQUFBO0FBQUE7O0FBQUE7QUFJaEMsb0dBQW9CRixnQkFBcEIsNEdBQXNDO0FBQUEsVUFBN0JwRixPQUE2Qjs7QUFDcEMsVUFBSUEsUUFBUUUsT0FBUixDQUFnQnFGLFlBQWhCLEtBQWlDLE1BQXJDLEVBQTZDO0FBQzdDLFVBQU1oRSxTQUFTMkQsV0FBV2xGLE9BQVgsQ0FBZjtBQUNBc0Ysc0JBQWdCbEQsSUFBaEIsQ0FBcUJiLE1BQXJCO0FBQ0Q7QUFSK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVaENRLGNBQVl1RCxlQUFaOztBQUVBRSxhQUFXbEMscUJBQVgsRUFBa0MsR0FBbEM7O0FBRUEsU0FBT2dDLGVBQVA7QUFDRCxDQWZNOztBQWlCUDlCLFNBQVNrQixnQkFBVCxDQUEwQixrQkFBMUIsRUFBOENTLFlBQTlDIiwiZmlsZSI6IjIyMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuaW1wb3J0IFNwbGlkZSBmcm9tICdAc3BsaWRlanMvc3BsaWRlJ1xuaW1wb3J0IHsgVmlkZW8gfSBmcm9tICdAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi12aWRlbydcbmltcG9ydCB7IEdyaWQgfSBmcm9tICdAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkJ1xuaW1wb3J0IHsgQXV0b1Njcm9sbCB9IGZyb20gJ0BzcGxpZGVqcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsJ1xuXG5jb25zdCBNSU5fU0xJREVTX0ZPUl9BVVRPUExBWSA9IDFcblxuY29uc3QgZW5hYmxlQXV0b3BsYXlPbk1vdW50ID0gKGN1cnJlbnQpID0+IHtcbiAgY3VycmVudC5vbignbW91bnRlZCcsICgpID0+IHtcbiAgICBjb25zdCBoYXNWaWRlbyA9IGN1cnJlbnQucm9vdC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ1tkYXRhLXNwbGlkZS15b3V0dWJlXSwgW2RhdGEtc3BsaWRlLXZpbWVvXSdcbiAgICApXG5cbiAgICBpZiAoIWhhc1ZpZGVvICYmIGN1cnJlbnQubGVuZ3RoID4gTUlOX1NMSURFU19GT1JfQVVUT1BMQVkpIHtcbiAgICAgIGlmIChjdXJyZW50LkNvbXBvbmVudHMuQXV0b3BsYXkpIHtcbiAgICAgICAgY3VycmVudC5Db21wb25lbnRzLkF1dG9wbGF5LnBsYXkoKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuY29uc3QgaGFuZGxlVmlkZW9FbmRlZCA9IChjdXJyZW50KSA9PiB7XG4gIGN1cnJlbnQub24oJ3ZpZGVvOmVuZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHZpZGVvRWxlbWVudCA9IGN1cnJlbnQucm9vdC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy5zcGxpZGVfX3NsaWRlLS1oYXMtdmlkZW8gLnNwbGlkZV9fdmlkZW8nXG4gICAgKVxuXG4gICAgY3VycmVudC5Db21wb25lbnRzLlZpZGVvLmRpc2FibGUodHJ1ZSlcblxuICAgIGlmICh2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQuQ29tcG9uZW50cy5BdXRvcGxheSkge1xuICAgICAgY3VycmVudC5Db21wb25lbnRzLkF1dG9wbGF5LnBsYXkoKVxuICAgIH1cblxuICAgIGN1cnJlbnQuZ28oJz4nKVxuICB9KVxufVxuXG5jb25zdCB2aWRlb0ltYWdlID0gKGN1cnJlbnQpID0+IHtcbiAgZW5hYmxlQXV0b3BsYXlPbk1vdW50KGN1cnJlbnQpXG4gIGhhbmRsZVZpZGVvRW5kZWQoY3VycmVudClcbn1cblxuY29uc3QgZ2V0RGF0YUF0dHJpYnV0ZXMgPSAoZWxlbWVudCkgPT4ge1xuICByZXR1cm4ge1xuICAgIGRhdGFTeW5jOiBlbGVtZW50LmRhdGFzZXQuc3luYyxcbiAgICBkYXRhU3luY1VwOiBlbGVtZW50LmRhdGFzZXQuc3luY1VwLFxuICAgIHBlclBhZ2U6IHBhcnNlSW50KGVsZW1lbnQuZGF0YXNldC5wZXJQYWdlKSxcbiAgICBmcmFjdGlvbjogZWxlbWVudC5kYXRhc2V0LmZyYWN0aW9uID09PSAndHJ1ZScsXG4gICAgYXV0b1Njcm9sbDogZWxlbWVudC5kYXRhc2V0LmF1dG9zY3JvbGwgPT09ICd0cnVlJyxcbiAgICB2aWRlb0N1c3RvbTogZWxlbWVudC5kYXRhc2V0LnZpZGVvQ3VzdG9tID09PSAndHJ1ZScsXG4gICAgaXRlbXNOdW1iZXI6IGVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNwbGlkZV9fbGlzdCcpLmNoaWxkcmVuLmxlbmd0aFxuICB9XG59XG5cbmNvbnN0IGluaXRTcGxpZGVJbnN0YW5jZSA9IChlbGVtZW50LCBhdHRyaWJ1dGVzKSA9PiB7XG4gIGNvbnN0IHsgaXRlbXNOdW1iZXIsIHBlclBhZ2UgfSA9IGF0dHJpYnV0ZXNcbiAgY29uc3QgYmFuZCA9IGl0ZW1zTnVtYmVyID4gcGVyUGFnZVxuXG4gIHJldHVybi
10391BuZXcgU3BsaWRlKGVsZW1lbnQsIHtcbiAgICB0eXBlOiBiYW5kID8gJ2xvb3AnIDogJ3NsaWRlJyxcbiAgICBhcnJvd3M6IGJhbmQsXG4gICAgcGFnaW5hdGlvbjogYmFuZCxcbiAgICBicmVha3BvaW50czoge1xuICAgICAgNzY4OiB7XG4gICAgICAgIGFycm93czogaXRlbXNOdW1iZXIgPiAxXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5jb25zdCBjb25maWd1cmVTcGxpZGUgPSAoc3BsaWRlLCBhdHRyaWJ1dGVzKSA9PiB7XG4gIGNvbnN0IGJhciA9IHNwbGlkZS5yb290LnF1ZXJ5U2VsZWN0b3IoJy5teS1jYXJvdXNlbC1wcm9ncmVzcy1iYXInKVxuICBjb25zdCBleHRlbnNpb25zID0geyBWaWRlbywgR3JpZCB9XG5cbiAgaWYgKGJhcikge1xuICAgIHByb2dyZXNzKHNwbGlkZSwgYmFyKVxuICB9XG5cbiAgaWYgKGF0dHJpYnV0ZXMuZnJhY3Rpb24pIHtcbiAgICBpbml0RnJhY3Rpb24oc3BsaWRlKVxuICB9XG5cbiAgaWYgKGF0dHJpYnV0ZXMudmlkZW9DdXN0b20pIHZpZGVvSW1hZ2Uoc3BsaWRlKVxuXG4gIGlmIChhdHRyaWJ1dGVzLmF1dG9TY3JvbGwpIHtcbiAgICBleHRlbnNpb25zLkF1dG9TY3JvbGwgPSBBdXRvU2Nyb2xsXG4gIH1cblxuICBzcGxpZGUubW91bnQoZXh0ZW5zaW9ucylcbn1cblxuY29uc3Qgc3luY1NwbGlkZXMgPSAoaW5zdGFuY2VzKSA9PiB7XG4gIGNvbnN0IG1haW5WZWN0b3IgPSBbXVxuICBjb25zdCB0aHVtYm5haWxWZWN0b3IgPSBbXVxuXG4gIGluc3RhbmNlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgIGlmIChlbGVtZW50LnJvb3QuZGF0YXNldC5zeW5jVXApIHtcbiAgICAgIG1haW5WZWN0b3IucHVzaChlbGVtZW50KVxuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnJvb3QuZGF0YXNldC5zeW5jKSB7XG4gICAgICB0aHVtYm5haWxWZWN0b3IucHVzaChlbGVtZW50KVxuICAgIH1cbiAgfSlcblxuICBpZiAobWFpblZlY3Rvci5sZW5ndGggPT09IHRodW1ibmFpbFZlY3Rvci5sZW5ndGgpIHtcbiAgICBtYWluVmVjdG9yLmZvckVhY2goKG1haW4sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB0aHVtYm5haWwgPSB0aHVtYm5haWxWZWN0b3JbaW5kZXhdXG4gICAgICBtYWluLnN5bmModGh1bWJuYWlsKVxuICAgIH0pXG4gIH1cbn1cblxuY29uc3QgcHJvZ3Jlc3MgPSAoc3BsaWRlLCBiYXIpID0+IHtcbiAgc3BsaWRlLm9uKCdtb3VudGVkIG1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGVuZCA9IHNwbGlkZS5Db21wb25lbnRzLkNvbnRyb2xsZXIuZ2V0RW5kKCkgKyAxXG4gICAgbGV0IHJhdGUgPSBNYXRoLm1pbigoc3BsaWRlLmluZGV4ICsgMSkgLyBlbmQsIDEpXG4gICAgYmFyLnN0eWxlLndpZHRoID0gU3RyaW5nKDEwMCAqIHJhdGUpICsgJyUnXG4gIH0pXG59XG5cbmNvbnN0IGluaXRGcmFjdGlvbiA9IChzcGxpZGUpID0+IHtcbiAgc3BsaWRlLm9uKCdwYWdpbmF0aW9uOnVwZGF0ZWQnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRhdGEubGlzdC5jbGFzc0xpc3QuYWRkKCdzcGxpZGVfX3BhZ2luYXRpb24tLWN1c3RvbScpXG4gICAgZGF0YS5saXN0LmlubmVySFRNTCA9XG4gICAgICBgPGxpIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGxpZGVfX3BhZ2luYXRpb24tcGFnZSBwYWdpbmF0aW9uLWZyYWN0aW9uX19jdXJyZW50IHNwbGlkZV9fcGFnaW5hdGlvbi0tY3VycmVudFwiPlxuICAgICAgICAgICR7c3BsaWRlLmluZGV4ICsgc3BsaWRlLm9wdGlvbnMucGVyUGFnZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cbiAgICAgIDxzcGFuIGNsYXNzPVwicGFnaW5hdGlvbi1mcmFjdGlvbl9fbGluZVwiPi88L3NwYW4+XG4gICAgICA8bGkgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNwbGlkZV9fcGFnaW5hdGlvbi1wYWdlIHBhZ2luYXRpb24tZnJhY3Rpb25fX3RvdGFsIHNwbGlkZV9fcGFnaW5hdGlvbi0tdG90YWxcIj5cbiAgICAgICAgICAke3NwbGlkZS5sZW5ndGh9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbGk+YFxuICB9KVxufVxuXG5jb25zdCBpbml0VmlkZW9Tb3VuZENvbnRyb2wgPSAoKSA9PiB7XG4gIGNvbnN0IHNvdW5kQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1zb3VuZCcpXG5cbiAgaWYgKCFzb3VuZEJ1dHRvbnMubGVuZ3RoKSByZXR1cm5cblxuICBjb25zdCB0b2dnbGVZb3VUdWJlU291bmQgPSAoc2xpZGUsIG11dGVJY29uKSA9PiB7XG4gICAgY29uc3QgaWZyYW1lID0gc2xpZGUucXVlcnlTZWxlY3RvcignaWZyYW1lJylcbiAgICBpZiAoIWlmcmFtZSB8fCAhaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHJldHVyblxuXG4gICAgY29uc3QgaXNNdXRlZCA9IG11dGVJY29uLmNsYXNzTGlzdC5jb250YWlucygnaXMtbXV0ZWQnKVxuXG4gICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6ICdjb21tYW5kJyxcbiAgICAgIGZ1bmM6IGlzTXV0ZWQgPyAndW5NdXRlJyA6ICdtdXRlJyxcbiAgICAgIGFyZ3M6ICcnXG4gICAgfSksICcqJylcblxuICAgIGlmIChpc011dGVkKSB7XG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1tdXRlZCcpXG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QuYWRkKCdvbi1tdXRlZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5yZW1vdmUoJ29uLW11dGVkJylcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5hZGQoJ2lzLW11dGVkJylcbiAgICB9XG4gIH1cblxuICBjb25zdCB0b2dnbGVWaW1lb1NvdW5kID0gKHNsaWRlLCBtdXRlSWNvbikgPT4ge1xuICAgIGNvbnN0IGlmcmFtZSA9IHNsaWRlLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpXG4gICAgaWYgKCFpZnJhbWUgfHwgIWlmcmFtZS5jb250ZW50V2luZG93KSByZXR1cm5cblxuICAgIGNvbnN0IGlzTXV0ZWQgPSBtdXRlSWNvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLW11dGVkJylcblxuICAgIGlmcmFtZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIG1ldGhvZDogJ3NldFZvbHVtZScsXG4gICAgICB2YWx1ZTogaXNNdXRlZCA/IDEgOiAwXG4gICAgfSksICcqJylcblxuICAgIGlmIChpc011dGVkKSB7XG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1tdXRlZCcpXG4gICAgICBtdXRlSWNvbi5jbGFzc0xpc3QuYWRkKCdvbi1tdXRlZCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5yZW1vdmUoJ29uLW11dGVkJylcbiAgICAgIG11dGVJY29uLmNsYXNzTGlzdC5hZGQoJ2lzLW11dGVkJylcbiAgICB9XG4gI
10391H1cblxuICBzb3VuZEJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgY29uc3Qgc2xpZGUgPSB0aGlzLmNsb3Nlc3QoJy5zcGxpZGVfX3NsaWRlJylcbiAgICAgIGNvbnN0IG11dGVJY29uID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcuanMtc291bmQtbXV0ZScpXG5cbiAgICAgIGlmICghc2xpZGUgfHwgIW11dGVJY29uKSByZXR1cm5cblxuICAgICAgY29uc3QgaXNZb3V0dWJlID0gc2xpZGUuaGFzQXR0cmlidXRlKCdkYXRhLXNwbGlkZS15b3V0dWJlJylcbiAgICAgIGNvbnN0IGlzVmltZW8gPSBzbGlkZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtc3BsaWRlLXZpbWVvJylcblxuICAgICAgaWYgKGlzWW91dHViZSkge1xuICAgICAgICB0b2dnbGVZb3VUdWJlU291bmQoc2xpZGUsIG11dGVJY29uKVxuICAgICAgfSBlbHNlIGlmIChpc1ZpbWVvKSB7XG4gICAgICAgIHRvZ2dsZVZpbWVvU291bmQoc2xpZGUsIG11dGVJY29uKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBpbml0U3BsaWRlID0gKGVsZW1lbnQpID0+IHtcbiAgY29uc3QgYXR0cmlidXRlcyA9IGdldERhdGFBdHRyaWJ1dGVzKGVsZW1lbnQpXG4gIGNvbnN0IHNwbGlkZSA9IGluaXRTcGxpZGVJbnN0YW5jZShlbGVtZW50LCBhdHRyaWJ1dGVzKVxuICBjb25maWd1cmVTcGxpZGUoc3BsaWRlLCBhdHRyaWJ1dGVzKVxuICByZXR1cm4gc3BsaWRlXG59XG5cbmV4cG9ydCBjb25zdCBjb25maWdTcGxpZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGVsZW1lbnRzQ2Fyb3VzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzcGxpZGUnKVxuICBsZXQgc3BsaWRlSW5zdGFuY2VzID0gW11cblxuICBmb3IgKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzQ2Fyb3VzZWwpIHtcbiAgICBpZiAoZWxlbWVudC5kYXRhc2V0Lmlnbm9yZVNwbGlkZSA9PT0gJ3RydWUnKSBjb250aW51ZVxuICAgIGNvbnN0IHNwbGlkZSA9IGluaXRTcGxpZGUoZWxlbWVudClcbiAgICBzcGxpZGVJbnN0YW5jZXMucHVzaChzcGxpZGUpXG4gIH1cblxuICBzeW5jU3BsaWRlcyhzcGxpZGVJbnN0YW5jZXMpXG5cbiAgc2V0VGltZW91dChpbml0VmlkZW9Tb3VuZENvbnRyb2wsIDEwMClcblxuICByZXR1cm4gc3BsaWRlSW5zdGFuY2VzXG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBjb25maWdTcGxpZGUpXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvdXRpbHMvc3BsaWRlX2Nhcm91c2VsLmpzIl0sInNvdXJjZVJvb3QiOiIifQ== 10392//# sourceURL=webpack-internal:///223 10393`)},function(module,exports,__webpack_require__){eval(`module.exports = { "default": __webpack_require__(225), __esModule: true }; 10394//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzPzlhZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCLFlBQVksbUJBQU8sQ0FBQyxHQUFtQyIsImZpbGUiOiIyMjQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvanNvbi9zdHJpbmdpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDIyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9 10395//# sourceURL=webpack-internal:///224 10396`)},function(module,exports,__webpack_require__){eval(`var core = __webpack_require__(2); 10397var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); 10398module.exports = function stringify(it) { // eslint-disable-line no-unused-vars 10399 return $JSON.stringify.apply($JSON, arguments); 10400}; 10401 10402//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzP2FhNDIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLENBQXFCO0FBQ3hDLHVDQUF1Qyw0QkFBNEI7QUFDbkUseUNBQXlDO0FBQ3pDO0FBQ0EiLCJmaWxlIjoiMjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNvcmUgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJyk7XG52YXIgJEpTT04gPSBjb3JlLkpTT04gfHwgKGNvcmUuSlNPTiA9IHsgc3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeSB9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuICRKU09OLnN0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJndW1lbnRzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDIyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9 10403//# sourceURL=webpack-internal:///225 10404`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Grid; }); 10405/*! 10406 * @splidejs/splide-extension-grid 10407 * Version : 0.4.1 10408 * License : MIT 10409 * Copyright: 2022 Naotoshi Fujita 10410 */ 10411function empty$1(array) { 10412 array.length = 0; 10413} 10414 10415function slice$1(arrayLike, start, end) { 10416 return Array.prototype.slice.call(arrayLike, start, end); 10417} 10418 10419function apply$1(func) { 10420 return func.bind.apply(func, [null].concat(slice$1(arguments, 1))); 10421} 10422 10423function typeOf$1(type, subject) { 10424 return typeof subject === type; 10425} 10426 10427var isArray$1 = Array.isArray;
vendor: 17,674 bytes, lines 10428-10991
10428apply$1(typeOf$1, "function"); 10429apply$1(typeOf$1, "string"); 10430apply$1(typeOf$1, "undefined"); 10431 10432function toArray$1(value) { 10433 return isArray$1(value) ? value : [value]; 10434} 10435 10436function forEach$1(values, iteratee) { 10437 toArray$1(values).forEach(iteratee); 10438} 10439 10440var ownKeys$1 = Object.keys; 10441 10442function forOwn$1(object, iteratee, right) { 10443 if (object) { 10444 var keys = ownKeys$1(object); 10445 keys = right ? keys.reverse() : keys; 10446 10447 for (var i = 0; i < keys.length; i++) { 10448 var key = keys[i]; 10449 10450 if (key !== "__proto__") { 10451 if (iteratee(object[key], key) === false) { 10452 break; 10453 } 10454 } 10455 } 10456 } 10457 10458 return object; 10459} 10460 10461function assign$1(object) { 10462 slice$1(arguments, 1).forEach(function (source) { 10463 forOwn$1(source, function (value, key) { 10464 object[key] = source[key]; 10465 }); 10466 }); 10467 return object; 10468} 10469 10470var PROJECT_CODE$1 = "splide"; 10471 10472function EventBinder() { 10473 var listeners = []; 10474 10475 function bind(targets, events, callback, options) { 10476 forEachEvent(targets, events, function (target, event, namespace) { 10477 var isEventTarget = ("addEventListener" in target); 10478 var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); 10479 isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); 10480 listeners.push([target, event, namespace, callback, remover]); 10481 }); 10482 } 10483 10484 function unbind(targets, events, callback) { 10485 forEachEvent(targets, events, function (target, event, namespace) { 10486 listeners = listeners.filter(function (listener) { 10487 if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { 10488 listener[4](); 10489 return false; 10490 } 10491 10492 return true; 10493 }); 10494 }); 10495 } 10496 10497 function dispatch(target, type, detail) { 10498 var e; 10499 var bubbles = true; 10500 10501 if (typeof CustomEvent === "function") { 10502 e = new CustomEvent(type, { 10503 bubbles: bubbles, 10504 detail: detail 10505 }); 10506 } else { 10507 e = document.createEvent("CustomEvent"); 10508 e.initCustomEvent(type, bubbles, false, detail); 10509 } 10510 10511 target.dispatchEvent(e); 10512 return e; 10513 } 10514 10515 function forEachEvent(targets, events, iteratee) { 10516 forEach$1(targets, function (target) { 10517 target && forEach$1(events, function (events2) { 10518 events2.split(" ").forEach(function (eventNS) { 10519 var fragment = eventNS.split("."); 10520 iteratee(target, fragment[0], fragment[1]); 10521 }); 10522 }); 10523 }); 10524 } 10525 10526 function destroy() { 10527 listeners.forEach(function (data) { 10528 data[4](); 10529 }); 10530 empty$1(listeners); 10531 } 10532 10533 return { 10534 bind: bind, 10535 unbind: unbind, 10536 dispatch: dispatch, 10537 destroy: destroy 10538 }; 10539} 10540var EVENT_VISIBLE = "visible"; 10541var EVENT_HIDDEN = "hidden"; 10542var EVENT_REFRESH = "refresh"; 10543var EVENT_UPDATED = "updated"; 10544var EVENT_DESTROY = "destroy"; 10545 10546function EventInterface(Splide2) { 10547 var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); 10548 var binder = EventBinder(); 10549 10550 function on(events, callback) { 10551 binder.bind(bus, toArray$1(events).join(" "), function (e) { 10552 callback.apply(callback, isArray$1(e.detail) ? e.detail : []); 10553 }); 10554 } 10555 10556 function emit(event) { 10557 binder.dispatch(bus, event, slice$1(arguments, 1)); 10558 } 10559 10560 if (Splide2) { 10561 Splide2.event.on(EVENT_DESTROY, binder.destroy); 10562 } 10563 10564 return assign$1(binder, { 10565 bus: bus, 10566 on: on, 10567 off: apply$1(binder.unbind, bus), 10568 emit: emit 10569 }); 10570} 10571var CLASS_ROOT = PROJECT_CODE$1; 10572var CLASS_SLIDE = PROJECT_CODE$1 + "__slide"; 10573var CLASS_CONTAINER = CLASS_SLIDE + "__container"; 10574 10575function empty(array) { 10576 array.length = 0; 10577} 10578 10579function slice(arrayLike, start, end) { 10580 return Array.prototype.slice.call(arrayLike, start, end); 10581} 10582 10583function apply(func) { 10584 return func.bind(null, ...slice(arguments, 1)); 10585} 10586 10587function typeOf(type, subject) { 10588 return typeof subject === type; 10589} 10590function isObject(subject) { 10591 return !isNull(subject) && typeOf("object", subject); 10592} 10593const isArray = Array.isArray; 10594apply(typeOf, "function"); 10595const isString = apply(typeOf, "string"); 10596const isUndefined = apply(typeOf, "undefined"); 10597function isNull(subject) { 10598 return subject === null; 10599} 10600function isHTMLElement(subject) { 10601 return subject instanceof HTMLElement; 10602} 10603 10604function toArray(value) { 10605 return isArray(value) ? value : [value]; 10606} 10607 10608function forEach(values, iteratee) { 10609 toArray(values).forEach(iteratee); 10610} 10611 10612function push(array, items) { 10613 array.push(...toArray(items)); 10614 return array; 10615} 10616 10617function toggleClass(elm, classes, add) { 10618 if (elm) { 10619 forEach(classes, (name) => { 10620 if (name) { 10621 elm.classList[add ? "add" : "remove"](name); 10622 } 10623 }); 10624 } 10625} 10626 10627function addClass(elm, classes) { 10628 toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); 10629} 10630 10631function append(parent, children) { 10632 forEach(children, parent.appendChild.bind(parent)); 10633} 10634 10635function matches(elm, selector) { 10636 return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); 10637} 10638 10639function children(parent, selector) { 10640 const children2 = parent ? slice(parent.children) : []; 10641 return selector ? children2.filter((child) => matches(child, selector)) : children2; 10642} 10643 10644function child(parent, selector) { 10645 return selector ? children(parent, selector)[0] : parent.firstElementChild; 10646} 10647 10648const ownKeys = Object.keys; 10649 10650function forOwn(object, iteratee, right) { 10651 if (object) { 10652 let keys = ownKeys(object); 10653 keys = right ? keys.reverse() : keys; 10654 for (let i = 0; i < keys.length; i++) { 10655 const key = keys[i]; 10656 if (key !== "__proto__") { 10657 if (iteratee(object[key], key) === false) { 10658 break; 10659 } 10660 } 10661 } 10662 } 10663 return object; 10664} 10665 10666function assign(object) { 10667 slice(arguments, 1).forEach((source) => { 10668 forOwn(source, (value, key) => { 10669 object[key] = source[key]; 10670 }); 10671 }); 10672 return object; 10673} 10674 10675function omit(object, keys) { 10676 toArray(keys || ownKeys(object)).forEach((key) => { 10677 delete object[key]; 10678 }); 10679} 10680 10681function removeAttribute(elms, attrs) { 10682 forEach(elms, (elm) => { 10683 forEach(attrs, (attr) => { 10684 elm && elm.removeAttribute(attr); 10685 }); 10686 }); 10687} 10688 10689function setAttribute(elms, attrs, value) { 10690 if (isObject(attrs)) { 10691 forOwn(attrs, (value2, name) => { 10692 setAttribute(elms, name, value2); 10693 }); 10694 } else { 10695 forEach(elms, (elm) => { 10696 isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); 10697 }); 10698 } 10699} 10700 10701function create(tag, attrs, parent) { 10702 const elm = document.createElement(tag); 10703 if (attrs) { 10704 isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); 10705 } 10706 parent && append(parent, elm); 10707 return elm; 10708} 10709 10710function style(elm, prop, value) { 10711 if (isUndefined(value)) { 10712 return getComputedStyle(elm)[prop]; 10713 } 10714 if (!isNull(value)) { 10715 elm.style[prop] = \`\${value}\`; 10716 } 10717} 10718 10719function hasClass(elm, className) { 10720 return elm && elm.classList.contains(className); 10721} 10722 10723function remove(nodes) { 10724 forEach(nodes, (node) => { 10725 if (node && node.parentNode) { 10726 node.parentNode.removeChild(node); 10727 } 10728 }); 10729} 10730 10731function queryAll(parent, selector) { 10732 return selector ? slice(parent.querySelectorAll(selector)) : []; 10733} 10734 10735function removeClass(elm, classes) { 10736 toggleClass(elm, classes, false); 10737} 10738 10739function unit(value) { 10740 return isString(value) ? value : value ? \`\${value}px\` : ""; 10741} 10742 10743const PROJECT_CODE = "splide"; 10744 10745function assert(condition, message) { 10746 if (!condition) { 10747 throw new Error(\`[\${PROJECT_CODE}] \${message || ""}\`); 10748 } 10749} 10750 10751const { min, max, floor, ceil, abs } = Math; 10752 10753function pad(number) { 10754 return number < 10 ? \`0\${number}\` : \`\${number}\`; 10755} 10756 10757const CLASS_SLIDE_ROW = \`\${CLASS_SLIDE}__row\`; 10758const CLASS_SLIDE_COL = \`\${CLASS_SLIDE}--col\`; 10759 10760const DEFAULTS = { 10761 rows: 1, 10762 cols: 1, 10763 dimensions: [], 10764 gap: {} 10765}; 10766 10767function Dimension(options) { 10768 function normalize() { 10769 const { rows, cols, dimensions } = options; 10770 return isArray(dimensions) && dimensions.length ? dimensions : [[rows, cols]]; 10771 } 10772 function get(index) { 10773 const dimensions = normalize(); 10774 return dimensions[min(index, dimensions.length - 1)]; 10775 } 10776 function getAt(index) { 10777 const dimensions = normalize(); 10778 let rows, cols, aggregator = 0; 10779 for (let i = 0; i < dimensions.length; i++) { 10780 const dimension = dimensions[i]; 10781 rows = dimension[0] || 1; 10782 cols = dimension[1] || 1; 10783 aggregator += rows * cols; 10784 if (index < aggregator) { 10785 break; 10786 } 10787 } 10788 assert(rows && cols, "Invalid dimension"); 10789 return [rows, cols]; 10790 } 10791 return { 10792 get, 10793 getAt 10794 }; 10795} 10796 10797function Layout(Splide2, gridOptions, Dimension) { 10798 const { on, destroy: destroyEvent } = EventInterface(Splide2); 10799 const { Components, options } = Splide2; 10800 const { resolve } = Components.Direction; 10801 const { forEach } = Components.Slides; 10802 function mount() { 10803 layout(); 10804 if (options.slideFocus) { 10805 on(EVENT_VISIBLE, onVisible); 10806 on(EVENT_HIDDEN, onHidden); 10807 } 10808 } 10809 function destroy() { 10810 forEach((Slide) => { 10811 const { slide } = Slide; 10812 toggleTabIndex(slide, false); 10813 getRowsIn(slide).forEach((cell) => { 10814 removeAttribute(cell, "style"); 10815 }); 10816 getColsIn(slide).forEach((colSlide) => { 10817 cover(colSlide, true); 10818 removeAttribute(colSlide, "style"); 10819 }); 10820 }); 10821 destroyEvent(); 10822 } 10823 function layout() { 10824 forEach((Slide) => { 10825 const { slide } = Slide; 10826 const [rows, cols] = Dimension.get(Slide.isClone ? Slide.slideIndex : Slide.index); 10827 layoutRow(rows, slide); 10828 layoutCol(cols, slide); 10829 getColsIn(Slide.slide).forEach((colSlide, index) => { 10830 colSlide.id = \`\${Slide.slide.id}-col\${pad(index + 1)}\`; 10831 if (Splide2.options.cover) { 10832 cover(colSlide); 10833 } 10834 }); 10835 }); 10836 } 10837 function layoutRow(rows, slide) { 10838 const { row: rowGap } = gridOptions.gap; 10839 const height = \`calc(\${100 / rows}%\${rowGap ? \` - \${unit(rowGap)} * \${(rows - 1) / rows}\` : ""})\`; 10840 getRowsIn(slide).forEach((rowElm, index, rowElms) => { 10841 style(rowElm, "height", height); 10842 style(rowElm, "display", "flex"); 10843 style(rowElm, "margin", \`0 0 \${unit(rowGap)} 0\`); 10844 style(rowElm, "padding", 0); 10845 if (index === rowElms.length - 1) { 10846 style(rowElm, "marginBottom", 0); 10847 } 10848 }); 10849 } 10850 function layoutCol(cols, slide) { 10851 const { col: colGap } = gridOptions.gap; 10852 const width = \`calc(\${100 / cols}%\${colGap ? \` - \${unit(colGap)} * \${(cols - 1) / cols}\` : ""})\`; 10853 getColsIn(slide).forEach((colElm, index, colElms) => { 10854 style(colElm, "width", width); 10855 if (index !== colElms.length - 1) { 10856 style(colElm, resolve("marginRight"), unit(colGap)); 10857 } 10858 }); 10859 } 10860 function cover(colSlide, uncover) { 10861 const container = child(colSlide, \`.\${CLASS_CONTAINER}\`); 10862 const img = child(container || colSlide, "img"); 10863 if (img && img.src) { 10864 style(container || colSlide, "background", uncover ? "" : \`center/cover no-repeat url("\${img.src}")\`); 10865 style(img, "display", uncover ? "" : "none"); 10866 } 10867 } 10868 function getRowsIn(slide) { 10869 return queryAll(slide, \`.\${CLASS_SLIDE_ROW}\`); 10870 } 10871 function getColsIn(slide) { 10872 return queryAll(slide, \`.\${CLASS_SLIDE_COL}\`); 10873 } 10874 function toggleTabIndex(slide, add) { 10875 getColsIn(slide).forEach((colSlide) => { 10876 setAttribute(colSlide, "tabindex", add ? 0 : null); 10877 }); 10878 } 10879 function onVisible(Slide) { 10880 toggleTabIndex(Slide.slide, true); 10881 } 10882 function onHidden(Slide) { 10883 toggleTabIndex(Slide.slide, false); 10884 } 10885 return { 10886 mount, 10887 destroy 10888 }; 10889} 10890 10891function Grid(Splide2, Components2, options) { 10892 const { on, off } = EventInterface(Splide2); 10893 const { Elements } = Components2; 10894 const gridOptions = {}; 10895 const Dimension$1 = Dimension(gridOptions); 10896 const Layout$1 = Layout(Splide2, gridOptions, Dimension$1); 10897 const modifier = \`\${CLASS_ROOT}--grid\`; 10898 const originalSlides = []; 10899 function mount() { 10900 init(); 10901 on(EVENT_UPDATED, init); 10902 } 10903 function init() { 10904 omit(gridOptions); 10905 assign(gridOptions, DEFAULTS, options.grid || {}); 10906 if (shouldBuild()) { 10907 destroy(); 10908 push(originalSlides, Elements.slides); 10909 addClass(Splide2.root, modifier); 10910 append(Elements.list, build()); 10911 off(EVENT_REFRESH); 10912 on(EVENT_REFRESH, layout); 10913 refresh(); 10914 } else if (isActive()) { 10915 destroy(); 10916 refresh(); 10917 } 10918 } 10919 function destroy() { 10920 if (isActive()) { 10921 const { slides } = Elements; 10922 Layout$1.destroy(); 10923 originalSlides.forEach((slide) => { 10924 removeClass(slide, CLASS_SLIDE_COL); 10925 append(Elements.list, slide); 10926 }); 10927 remove(slides); 10928 removeClass(Splide2.root, modifier); 10929 empty(slides); 10930 push(slides, originalSlides); 10931 empty(originalSlides); 10932 off(EVENT_REFRESH); 10933 } 10934 } 10935 function refresh() { 10936 Splide2.refresh(); 10937 } 10938 function layout() { 10939 if (isActive()) { 10940 Layout$1.mount(); 10941 } 10942 } 10943 function build() { 10944 const outerSlides = []; 10945 let row = 0, col = 0; 10946 let outerSlide, rowSlide; 10947 originalSlides.forEach((slide, index) => { 10948 const [rows, cols] = Dimension$1.getAt(index); 10949 if (!col) { 10950 if (!row) { 10951 outerSlide = create(slide.tagName, CLASS_SLIDE); 10952 outerSlides.push(outerSlide); 10953 } 10954 rowSlide = buildRow(rows, slide, outerSlide); 10955 } 10956 buildCol(cols, slide, rowSlide); 10957 if (++col >= cols) { 10958 col = 0; 10959 row = ++row >= rows ? 0 : row; 10960 } 10961 }); 10962 return outerSlides; 10963 } 10964 function buildRow(rows, slide, outerSlide) { 10965 const tag = slide.tagName.toLowerCase() === "li" ? "ul" : "div"; 10966 return create(tag, CLASS_SLIDE_ROW, outerSlide); 10967 } 10968 function buildCol(cols, slide, rowSlide) { 10969 addClass(slide, CLASS_SLIDE_COL); 10970 append(rowSlide, slide); 10971 return slide; 10972 } 10973 function shouldBuild() { 10974 if (options.grid) { 10975 const { rows, cols, dimensions } = gridOptions; 10976 return rows > 1 || cols > 1 || isArray(dimensions) && dimensions.length > 0; 10977 } 10978 return false; 10979 } 10980 function isActive() { 10981 return hasClass(Splide2.root, modifier); 10982 } 10983 return { 10984 mount, 10985 destroy 10986 }; 10987} 10988 10989 10990 10991//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC9kaXN0L2pzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC5lc20uanM/NDcwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixNQUFNO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QyxNQUFNO0FBQ3BEOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsYUFBYSxJQUFJLGNBQWM7QUFDdkQ7QUFDQTs7QUFFQSxPQUFPLDZCQUE2Qjs7QUFFcEM7QUFDQSwyQkFBMkIsT0FBTyxPQUFPLE9BQU87QUFDaEQ7O0FBRUEsMkJBQTJCLFlBQVk7QUFDdkMsMkJBQTJCLFlBQVk7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHVCQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsVUFBVTtBQUNuQixTQUFTLFVBQVU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLGVBQWUsTUFBTSxlQUFlO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLF
10991dBQVcsY0FBYztBQUN6QiwyQkFBMkIsV0FBVyxHQUFHLGVBQWUsYUFBYSxLQUFLLGtCQUFrQixPQUFPO0FBQ25HO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxhQUFhO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsMEJBQTBCLFdBQVcsR0FBRyxlQUFlLGFBQWEsS0FBSyxrQkFBa0IsT0FBTztBQUNsRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFEO0FBQ0E7QUFDQSwrRkFBK0YsUUFBUTtBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxVQUFVO0FBQ25CLFNBQVMsV0FBVztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsV0FBVztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUJBQXlCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0IiLCJmaWxlIjoiMjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1ncmlkXG4gKiBWZXJzaW9uICA6IDAuNC4xXG4gKiBMaWNlbnNlICA6IE1JVFxuICogQ29weXJpZ2h0OiAyMDIyIE5hb3Rvc2hpIEZ1aml0YVxuICovXG5mdW5jdGlvbiBlbXB0eSQxKGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlJDEoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBhcHBseSQxKGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmMuYmluZC5hcHBseShmdW5jLCBbbnVsbF0uY29uY2F0KHNsaWNlJDEoYXJndW1lbnRzLCAxKSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YkMSh0eXBlLCBzdWJqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygc3ViamVjdCA9PT0gdHlwZTtcbn1cblxudmFyIGlzQXJyYXkkMSA9IEFycmF5LmlzQXJyYXk7XG5hcHBseSQxKHR5cGVPZiQxLCBcImZ1bmN0aW9uXCIpO1xuYXBwbHkkMSh0eXBlT2YkMSwgXCJzdHJpbmdcIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInVuZGVmaW5lZFwiKTtcblxuZnVuY3Rpb24gdG9BcnJheSQxKHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5JDEodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoJDEodmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5JDEodmFsdWVzKS5mb3JFYWNoKGl0ZXJhdGVlKTtcbn1cblxudmFyIG93bktleXMkMSA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24kMShvYmplY3QsIGl0ZXJhdGVlLCByaWdodCkge1xuICBpZiAob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBvd25LZXlzJDEob2JqZWN0KTtcbiAgICBrZXlzID0gcmlnaHQgPyBrZXlzLnJldmVyc2UoKSA6IGtleXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbiQxKG9iamVjdCkge1xuICBzbGljZSQxKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duJDEoc291cmNlLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbnZhciBQUk9KRUNUX0NPREUkMSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgI
10991H1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2gkMSh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaCQxKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50czIpIHtcbiAgICAgICAgZXZlbnRzMi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROUykge1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV2ZW50TlMuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgIGl0ZXJhdGVlKHRhcmdldCwgZnJhZ21lbnRbMF0sIGZyYWdtZW50WzFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGRhdGFbNF0oKTtcbiAgICB9KTtcbiAgICBlbXB0eSQxKGxpc3RlbmVycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJpbmQ6IGJpbmQsXG4gICAgdW5iaW5kOiB1bmJpbmQsXG4gICAgZGlzcGF0Y2g6IGRpc3BhdGNoLFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfTtcbn1cbnZhciBFVkVOVF9WSVNJQkxFID0gXCJ2aXNpYmxlXCI7XG52YXIgRVZFTlRfSElEREVOID0gXCJoaWRkZW5cIjtcbnZhciBFVkVOVF9SRUZSRVNIID0gXCJyZWZyZXNoXCI7XG52YXIgRVZFTlRfVVBEQVRFRCA9IFwidXBkYXRlZFwiO1xudmFyIEVWRU5UX0RFU1RST1kgPSBcImRlc3Ryb3lcIjtcblxuZnVuY3Rpb24gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikge1xuICB2YXIgYnVzID0gU3BsaWRlMiA/IFNwbGlkZTIuZXZlbnQuYnVzIDogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcblxuICBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgYmluZGVyLmJpbmQoYnVzLCB0b0FycmF5JDEoZXZlbnRzKS5qb2luKFwiIFwiKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KGNhbGxiYWNrLCBpc0FycmF5JDEoZS5kZXRhaWwpID8gZS5kZXRhaWwgOiBbXSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBlbWl0KGV2ZW50KSB7XG4gICAgYmluZGVyLmRpc3BhdGNoKGJ1cywgZXZlbnQsIHNsaWNlJDEoYXJndW1lbnRzLCAxKSk7XG4gIH1cblxuICBpZiAoU3BsaWRlMikge1xuICAgIFNwbGlkZTIuZXZlbnQub24oRVZFTlRfREVTVFJPWSwgYmluZGVyLmRlc3Ryb3kpO1xuICB9XG5cbiAgcmV0dXJuIGFzc2lnbiQxKGJpbmRlciwge1xuICAgIGJ1czogYnVzLFxuICAgIG9uOiBvbixcbiAgICBvZmY6IGFwcGx5JDEoYmluZGVyLnVuYmluZCwgYnVzKSxcbiAgICBlbWl0OiBlbWl0XG4gIH0pO1xufVxudmFyIENMQVNTX1JPT1QgPSBQUk9KRUNUX0NPREUkMTtcbnZhciBDTEFTU19TTElERSA9IFBST0pFQ1RfQ09ERSQxICsgXCJfX3NsaWRlXCI7XG52YXIgQ0xBU1NfQ09OVEFJTkVSID0gQ0xBU1NfU0xJREUgKyBcIl9fY29udGFpbmVyXCI7XG5cbmZ1bmN0aW9uIGVtcHR5KGFycmF5KSB7XG4gIGFycmF5Lmxlbmd0aCA9IDA7XG59XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kKG51bGwsIC4uLnNsaWNlKGFyZ3VtZW50cywgMSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuY29uc3QgaXNTdHJpbmcgPSBhcHBseSh0eXBlT2YsIFwic3RyaW5nXCIpO1xuY29uc3QgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuZnVuY3Rpb24gaXNOdWxsKHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgPT09IG51bGw7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHN1YmplY3QpIHtcbiAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIHB1c2goYXJyYXksIGl0ZW1zKSB7XG4gIGFycmF5LnB1c2goLi4udG9BcnJheShpdGVtcykpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIChuYW1lKSA9PiB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgO
10991iBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVzKGVsbSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIGlzSFRNTEVsZW1lbnQoZWxtKSAmJiAoZWxtW1wibXNNYXRjaGVzU2VsZWN0b3JcIl0gfHwgZWxtLm1hdGNoZXMpLmNhbGwoZWxtLCBzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4yID0gcGFyZW50ID8gc2xpY2UocGFyZW50LmNoaWxkcmVuKSA6IFtdO1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbjIuZmlsdGVyKChjaGlsZCkgPT4gbWF0Y2hlcyhjaGlsZCwgc2VsZWN0b3IpKSA6IGNoaWxkcmVuMjtcbn1cblxuZnVuY3Rpb24gY2hpbGQocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKVswXSA6IHBhcmVudC5maXJzdEVsZW1lbnRDaGlsZDtcbn1cblxuY29uc3Qgb3duS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5mdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSwgcmlnaHQpIHtcbiAgaWYgKG9iamVjdCkge1xuICAgIGxldCBrZXlzID0gb3duS2V5cyhvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ICE9PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICAgIGlmIChpdGVyYXRlZShvYmplY3Rba2V5XSwga2V5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaCgoc291cmNlKSA9PiB7XG4gICAgZm9yT3duKHNvdXJjZSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5cykge1xuICB0b0FycmF5KGtleXMgfHwgb3duS2V5cyhvYmplY3QpKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBkZWxldGUgb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUoZWxtcywgYXR0cnMpIHtcbiAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgZm9yRWFjaChhdHRycywgKGF0dHIpID0+IHtcbiAgICAgIGVsbSAmJiBlbG0ucmVtb3ZlQXR0cmlidXRlKGF0dHIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2V0QXR0cmlidXRlKGVsbXMsIGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoaXNPYmplY3QoYXR0cnMpKSB7XG4gICAgZm9yT3duKGF0dHJzLCAodmFsdWUyLCBuYW1lKSA9PiB7XG4gICAgICBzZXRBdHRyaWJ1dGUoZWxtcywgbmFtZSwgdmFsdWUyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBmb3JFYWNoKGVsbXMsIChlbG0pID0+IHtcbiAgICAgIGlzTnVsbCh2YWx1ZSkgfHwgdmFsdWUgPT09IFwiXCIgPyByZW1vdmVBdHRyaWJ1dGUoZWxtLCBhdHRycykgOiBlbG0uc2V0QXR0cmlidXRlKGF0dHJzLCBTdHJpbmcodmFsdWUpKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGUodGFnLCBhdHRycywgcGFyZW50KSB7XG4gIGNvbnN0IGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgaWYgKGF0dHJzKSB7XG4gICAgaXNTdHJpbmcoYXR0cnMpID8gYWRkQ2xhc3MoZWxtLCBhdHRycykgOiBzZXRBdHRyaWJ1dGUoZWxtLCBhdHRycyk7XG4gIH1cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybiBlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cbiAgaWYgKCFpc051bGwodmFsdWUpKSB7XG4gICAgZWxtLnN0eWxlW3Byb3BdID0gYCR7dmFsdWV9YDtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNDbGFzcyhlbG0sIGNsYXNzTmFtZSkge1xuICByZXR1cm4gZWxtICYmIGVsbS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlKG5vZGVzKSB7XG4gIGZvckVhY2gobm9kZXMsIChub2RlKSA9PiB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdW5pdCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IGAke3ZhbHVlfXB4YCA6IFwiXCI7XG59XG5cbmNvbnN0IFBST0pFQ1RfQ09ERSA9IFwic3BsaWRlXCI7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFske1BST0pFQ1RfQ09ERX1dICR7bWVzc2FnZSB8fCBcIlwifWApO1xuICB9XG59XG5cbmNvbnN0IHsgbWluLCBtYXgsIGZsb29yLCBjZWlsLCBhYnMgfSA9IE1hdGg7XG5cbmZ1bmN0aW9uIHBhZChudW1iZXIpIHtcbiAgcmV0dXJuIG51bWJlciA8IDEwID8gYDAke251bWJlcn1gIDogYCR7bnVtYmVyfWA7XG59XG5cbmNvbnN0IENMQVNTX1NMSURFX1JPVyA9IGAke0NMQVNTX1NMSURFfV9fcm93YDtcbmNvbnN0IENMQVNTX1NMSURFX0NPTCA9IGAke0NMQVNTX1NMSURFfS0tY29sYDtcblxuY29uc3QgREVGQVVMVFMgPSB7XG4gIHJvd3M6IDEsXG4gIGNvbHM6IDEsXG4gIGRpbWVuc2lvbnM6IFtdLFxuICBnYXA6IHt9XG59O1xuXG5mdW5jdGlvbiBEaW
109911lbnNpb24ob3B0aW9ucykge1xuICBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBvcHRpb25zO1xuICAgIHJldHVybiBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID8gZGltZW5zaW9ucyA6IFtbcm93cywgY29sc11dO1xuICB9XG4gIGZ1bmN0aW9uIGdldChpbmRleCkge1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBub3JtYWxpemUoKTtcbiAgICByZXR1cm4gZGltZW5zaW9uc1ttaW4oaW5kZXgsIGRpbWVuc2lvbnMubGVuZ3RoIC0gMSldO1xuICB9XG4gIGZ1bmN0aW9uIGdldEF0KGluZGV4KSB7XG4gICAgY29uc3QgZGltZW5zaW9ucyA9IG5vcm1hbGl6ZSgpO1xuICAgIGxldCByb3dzLCBjb2xzLCBhZ2dyZWdhdG9yID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGRpbWVuc2lvbnNbaV07XG4gICAgICByb3dzID0gZGltZW5zaW9uWzBdIHx8IDE7XG4gICAgICBjb2xzID0gZGltZW5zaW9uWzFdIHx8IDE7XG4gICAgICBhZ2dyZWdhdG9yICs9IHJvd3MgKiBjb2xzO1xuICAgICAgaWYgKGluZGV4IDwgYWdncmVnYXRvcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgYXNzZXJ0KHJvd3MgJiYgY29scywgXCJJbnZhbGlkIGRpbWVuc2lvblwiKTtcbiAgICByZXR1cm4gW3Jvd3MsIGNvbHNdO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0LFxuICAgIGdldEF0XG4gIH07XG59XG5cbmZ1bmN0aW9uIExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uKSB7XG4gIGNvbnN0IHsgb24sIGRlc3Ryb3k6IGRlc3Ryb3lFdmVudCB9ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMik7XG4gIGNvbnN0IHsgQ29tcG9uZW50cywgb3B0aW9ucyB9ID0gU3BsaWRlMjtcbiAgY29uc3QgeyByZXNvbHZlIH0gPSBDb21wb25lbnRzLkRpcmVjdGlvbjtcbiAgY29uc3QgeyBmb3JFYWNoIH0gPSBDb21wb25lbnRzLlNsaWRlcztcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgbGF5b3V0KCk7XG4gICAgaWYgKG9wdGlvbnMuc2xpZGVGb2N1cykge1xuICAgICAgb24oRVZFTlRfVklTSUJMRSwgb25WaXNpYmxlKTtcbiAgICAgIG9uKEVWRU5UX0hJRERFTiwgb25IaWRkZW4pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGZvckVhY2goKFNsaWRlKSA9PiB7XG4gICAgICBjb25zdCB7IHNsaWRlIH0gPSBTbGlkZTtcbiAgICAgIHRvZ2dsZVRhYkluZGV4KHNsaWRlLCBmYWxzZSk7XG4gICAgICBnZXRSb3dzSW4oc2xpZGUpLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGNlbGwsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgICAgY292ZXIoY29sU2xpZGUsIHRydWUpO1xuICAgICAgICByZW1vdmVBdHRyaWJ1dGUoY29sU2xpZGUsIFwic3R5bGVcIik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXN0cm95RXZlbnQoKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgZm9yRWFjaCgoU2xpZGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc2xpZGUgfSA9IFNsaWRlO1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uLmdldChTbGlkZS5pc0Nsb25lID8gU2xpZGUuc2xpZGVJbmRleCA6IFNsaWRlLmluZGV4KTtcbiAgICAgIGxheW91dFJvdyhyb3dzLCBzbGlkZSk7XG4gICAgICBsYXlvdXRDb2woY29scywgc2xpZGUpO1xuICAgICAgZ2V0Q29sc0luKFNsaWRlLnNsaWRlKS5mb3JFYWNoKChjb2xTbGlkZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29sU2xpZGUuaWQgPSBgJHtTbGlkZS5zbGlkZS5pZH0tY29sJHtwYWQoaW5kZXggKyAxKX1gO1xuICAgICAgICBpZiAoU3BsaWRlMi5vcHRpb25zLmNvdmVyKSB7XG4gICAgICAgICAgY292ZXIoY29sU2xpZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXRSb3cocm93cywgc2xpZGUpIHtcbiAgICBjb25zdCB7IHJvdzogcm93R2FwIH0gPSBncmlkT3B0aW9ucy5nYXA7XG4gICAgY29uc3QgaGVpZ2h0ID0gYGNhbGMoJHsxMDAgLyByb3dzfSUke3Jvd0dhcCA/IGAgLSAke3VuaXQocm93R2FwKX0gKiAkeyhyb3dzIC0gMSkgLyByb3dzfWAgOiBcIlwifSlgO1xuICAgIGdldFJvd3NJbihzbGlkZSkuZm9yRWFjaCgocm93RWxtLCBpbmRleCwgcm93RWxtcykgPT4ge1xuICAgICAgc3R5bGUocm93RWxtLCBcImhlaWdodFwiLCBoZWlnaHQpO1xuICAgICAgc3R5bGUocm93RWxtLCBcImRpc3BsYXlcIiwgXCJmbGV4XCIpO1xuICAgICAgc3R5bGUocm93RWxtLCBcIm1hcmdpblwiLCBgMCAwICR7dW5pdChyb3dHYXApfSAwYCk7XG4gICAgICBzdHlsZShyb3dFbG0sIFwicGFkZGluZ1wiLCAwKTtcbiAgICAgIGlmIChpbmRleCA9PT0gcm93RWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0eWxlKHJvd0VsbSwgXCJtYXJnaW5Cb3R0b21cIiwgMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gbGF5b3V0Q29sKGNvbHMsIHNsaWRlKSB7XG4gICAgY29uc3QgeyBjb2w6IGNvbEdhcCB9ID0gZ3JpZE9wdGlvbnMuZ2FwO1xuICAgIGNvbnN0IHdpZHRoID0gYGNhbGMoJHsxMDAgLyBjb2xzfSUke2NvbEdhcCA/IGAgLSAke3VuaXQoY29sR2FwKX0gKiAkeyhjb2xzIC0gMSkgLyBjb2xzfWAgOiBcIlwifSlgO1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sRWxtLCBpbmRleCwgY29sRWxtcykgPT4ge1xuICAgICAgc3R5bGUoY29sRWxtLCBcIndpZHRoXCIsIHdpZHRoKTtcbiAgICAgIGlmIChpbmRleCAhPT0gY29sRWxtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0eWxlKGNvbEVsbSwgcmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpLCB1bml0KGNvbEdhcCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNvdmVyKGNvbFNsaWRlLCB1bmNvdmVyKSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gY2hpbGQoY29sU2xpZGUsIGAuJHtDTEFT
10991U19DT05UQUlORVJ9YCk7XG4gICAgY29uc3QgaW1nID0gY2hpbGQoY29udGFpbmVyIHx8IGNvbFNsaWRlLCBcImltZ1wiKTtcbiAgICBpZiAoaW1nICYmIGltZy5zcmMpIHtcbiAgICAgIHN0eWxlKGNvbnRhaW5lciB8fCBjb2xTbGlkZSwgXCJiYWNrZ3JvdW5kXCIsIHVuY292ZXIgPyBcIlwiIDogYGNlbnRlci9jb3ZlciBuby1yZXBlYXQgdXJsKFwiJHtpbWcuc3JjfVwiKWApO1xuICAgICAgc3R5bGUoaW1nLCBcImRpc3BsYXlcIiwgdW5jb3ZlciA/IFwiXCIgOiBcIm5vbmVcIik7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldFJvd3NJbihzbGlkZSkge1xuICAgIHJldHVybiBxdWVyeUFsbChzbGlkZSwgYC4ke0NMQVNTX1NMSURFX1JPV31gKTtcbiAgfVxuICBmdW5jdGlvbiBnZXRDb2xzSW4oc2xpZGUpIHtcbiAgICByZXR1cm4gcXVlcnlBbGwoc2xpZGUsIGAuJHtDTEFTU19TTElERV9DT0x9YCk7XG4gIH1cbiAgZnVuY3Rpb24gdG9nZ2xlVGFiSW5kZXgoc2xpZGUsIGFkZCkge1xuICAgIGdldENvbHNJbihzbGlkZSkuZm9yRWFjaCgoY29sU2xpZGUpID0+IHtcbiAgICAgIHNldEF0dHJpYnV0ZShjb2xTbGlkZSwgXCJ0YWJpbmRleFwiLCBhZGQgPyAwIDogbnVsbCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb25WaXNpYmxlKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIHRydWUpO1xuICB9XG4gIGZ1bmN0aW9uIG9uSGlkZGVuKFNsaWRlKSB7XG4gICAgdG9nZ2xlVGFiSW5kZXgoU2xpZGUuc2xpZGUsIGZhbHNlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZnVuY3Rpb24gR3JpZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICBjb25zdCB7IG9uLCBvZmYgfSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICBjb25zdCB7IEVsZW1lbnRzIH0gPSBDb21wb25lbnRzMjtcbiAgY29uc3QgZ3JpZE9wdGlvbnMgPSB7fTtcbiAgY29uc3QgRGltZW5zaW9uJDEgPSBEaW1lbnNpb24oZ3JpZE9wdGlvbnMpO1xuICBjb25zdCBMYXlvdXQkMSA9IExheW91dChTcGxpZGUyLCBncmlkT3B0aW9ucywgRGltZW5zaW9uJDEpO1xuICBjb25zdCBtb2RpZmllciA9IGAke0NMQVNTX1JPT1R9LS1ncmlkYDtcbiAgY29uc3Qgb3JpZ2luYWxTbGlkZXMgPSBbXTtcbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIG9uKEVWRU5UX1VQREFURUQsIGluaXQpO1xuICB9XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgb21pdChncmlkT3B0aW9ucyk7XG4gICAgYXNzaWduKGdyaWRPcHRpb25zLCBERUZBVUxUUywgb3B0aW9ucy5ncmlkIHx8IHt9KTtcbiAgICBpZiAoc2hvdWxkQnVpbGQoKSkge1xuICAgICAgZGVzdHJveSgpO1xuICAgICAgcHVzaChvcmlnaW5hbFNsaWRlcywgRWxlbWVudHMuc2xpZGVzKTtcbiAgICAgIGFkZENsYXNzKFNwbGlkZTIucm9vdCwgbW9kaWZpZXIpO1xuICAgICAgYXBwZW5kKEVsZW1lbnRzLmxpc3QsIGJ1aWxkKCkpO1xuICAgICAgb2ZmKEVWRU5UX1JFRlJFU0gpO1xuICAgICAgb24oRVZFTlRfUkVGUkVTSCwgbGF5b3V0KTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9IGVsc2UgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICAgIHJlZnJlc2goKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAoaXNBY3RpdmUoKSkge1xuICAgICAgY29uc3QgeyBzbGlkZXMgfSA9IEVsZW1lbnRzO1xuICAgICAgTGF5b3V0JDEuZGVzdHJveSgpO1xuICAgICAgb3JpZ2luYWxTbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+IHtcbiAgICAgICAgcmVtb3ZlQ2xhc3Moc2xpZGUsIENMQVNTX1NMSURFX0NPTCk7XG4gICAgICAgIGFwcGVuZChFbGVtZW50cy5saXN0LCBzbGlkZSk7XG4gICAgICB9KTtcbiAgICAgIHJlbW92ZShzbGlkZXMpO1xuICAgICAgcmVtb3ZlQ2xhc3MoU3BsaWRlMi5yb290LCBtb2RpZmllcik7XG4gICAgICBlbXB0eShzbGlkZXMpO1xuICAgICAgcHVzaChzbGlkZXMsIG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIGVtcHR5KG9yaWdpbmFsU2xpZGVzKTtcbiAgICAgIG9mZihFVkVOVF9SRUZSRVNIKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICBTcGxpZGUyLnJlZnJlc2goKTtcbiAgfVxuICBmdW5jdGlvbiBsYXlvdXQoKSB7XG4gICAgaWYgKGlzQWN0aXZlKCkpIHtcbiAgICAgIExheW91dCQxLm1vdW50KCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGJ1aWxkKCkge1xuICAgIGNvbnN0IG91dGVyU2xpZGVzID0gW107XG4gICAgbGV0IHJvdyA9IDAsIGNvbCA9IDA7XG4gICAgbGV0IG91dGVyU2xpZGUsIHJvd1NsaWRlO1xuICAgIG9yaWdpbmFsU2xpZGVzLmZvckVhY2goKHNsaWRlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gRGltZW5zaW9uJDEuZ2V0QXQoaW5kZXgpO1xuICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgaWYgKCFyb3cpIHtcbiAgICAgICAgICBvdXRlclNsaWRlID0gY3JlYXRlKHNsaWRlLnRhZ05hbWUsIENMQVNTX1NMSURFKTtcbiAgICAgICAgICBvdXRlclNsaWRlcy5wdXNoKG91dGVyU2xpZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJvd1NsaWRlID0gYnVpbGRSb3cocm93cywgc2xpZGUsIG91dGVyU2xpZGUpO1xuICAgICAgfVxuICAgICAgYnVpbGRDb2woY29scywgc2xpZGUsIHJvd1NsaWRlKTtcbiAgICAgIGlmICgrK2NvbCA+PSBjb2xzKSB7XG4gICAgICAgIGNvbCA9IDA7XG4gICAgICAgIHJvdyA9ICsrcm93ID49IHJvd3MgPyAwIDogcm93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBvdXRlclNsaWRlcztcbiAgfVxuICBmdW5jdGlvbiBidWlsZFJvdyhyb3dzLCBzbGlkZSwgb3V0ZXJTbGlkZSkge1xuICAgIGNvbnN0IHRhZyA9IHNsaWRlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJsaVwiID8gXCJ1bFwiIDogXCJkaXZcIjtcbiAgICByZXR1cm4gY3JlYXRlKHRhZywgQ0xBU1NfU0xJREVfUk9XLCBvdXRlclNsaWRlKTtcbiAgfVxuICBmdW5jdGlvbiBidWlsZENvbChjb2xzLCBzbGlkZSwgcm93U2xpZGUpIHtcbiAgICBhZGRDbGFzcyhzbGlkZSwgQ0xBU1NfU0xJREVfQ09MKTtcbiAgICBhcHBlbmQocm93U2xpZGUsIHNsaWRlKTtcbiAgICByZXR1cm4gc2xpZGU7XG4gIH1cbiAgZnVuY3Rpb24gc2hvdWxkQnVpbGQoKSB7XG4gICAgaWYgKG9wdGlvbnMuZ3JpZCkge1xuICAgICAgY29uc3QgeyByb3dzLCBjb2xzLCBkaW1lbnNpb25zIH0gPSBncmlkT3B0aW9ucztcbiAgICAgIHJldHVybi
10991Byb3dzID4gMSB8fCBjb2xzID4gMSB8fCBpc0FycmF5KGRpbWVuc2lvbnMpICYmIGRpbWVuc2lvbnMubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgIHJldHVybiBoYXNDbGFzcyhTcGxpZGUyLnJvb3QsIG1vZGlmaWVyKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1vdW50LFxuICAgIGRlc3Ryb3lcbiAgfTtcbn1cblxuZXhwb3J0IHsgR3JpZCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC9kaXN0L2pzL3NwbGlkZS1leHRlbnNpb24tZ3JpZC5lc20uanNcbi8vIG1vZHVsZSBpZCA9IDIyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDUiXSwic291cmNlUm9vdCI6IiJ9 10992//# sourceURL=webpack-internal:///226 10993`)},function(module,__webpack_exports__,__webpack_require__){"use strict";eval(`/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AutoScroll; }); 10994/*! 10995 * @splidejs/splide-extension-auto-scroll 10996 * Version : 0.5.3 10997 * License : MIT 10998 * Copyright: 2022 Naotoshi Fujita 10999 */ 11000function empty(array) { 11001 array.length = 0; 11002} 11003 11004function slice$1(arrayLike, start, end) { 11005 return Array.prototype.slice.call(arrayLike, start, end); 11006} 11007 11008function apply$1(func) { 11009 return func.bind.apply(func, [null].concat(slice$1(arguments, 1))); 11010} 11011 11012function raf(func) { 11013 return requestAnimationFrame(func); 11014} 11015 11016function typeOf$1(type, subject) { 11017 return typeof subject === type; 11018} 11019 11020var isArray$1 = Array.isArray; 11021apply$1(typeOf$1, "function"); 11022apply$1(typeOf$1, "string");
vendor: 12,838 bytes, lines 11023-11531
11023apply$1(typeOf$1, "undefined"); 11024 11025function toArray$1(value) { 11026 return isArray$1(value) ? value : [value]; 11027} 11028 11029function forEach$1(values, iteratee) { 11030 toArray$1(values).forEach(iteratee); 11031} 11032 11033var ownKeys$1 = Object.keys; 11034 11035function forOwn$1(object, iteratee, right) { 11036 if (object) { 11037 var keys = ownKeys$1(object); 11038 keys = right ? keys.reverse() : keys; 11039 11040 for (var i = 0; i < keys.length; i++) { 11041 var key = keys[i]; 11042 11043 if (key !== "__proto__") { 11044 if (iteratee(object[key], key) === false) { 11045 break; 11046 } 11047 } 11048 } 11049 } 11050 11051 return object; 11052} 11053 11054function assign$1(object) { 11055 slice$1(arguments, 1).forEach(function (source) { 11056 forOwn$1(source, function (value, key) { 11057 object[key] = source[key]; 11058 }); 11059 }); 11060 return object; 11061} 11062 11063var min$1 = Math.min; 11064 11065function EventBinder() { 11066 var listeners = []; 11067 11068 function bind(targets, events, callback, options) { 11069 forEachEvent(targets, events, function (target, event, namespace) { 11070 var isEventTarget = ("addEventListener" in target); 11071 var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); 11072 isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); 11073 listeners.push([target, event, namespace, callback, remover]); 11074 }); 11075 } 11076 11077 function unbind(targets, events, callback) { 11078 forEachEvent(targets, events, function (target, event, namespace) { 11079 listeners = listeners.filter(function (listener) { 11080 if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { 11081 listener[4](); 11082 return false; 11083 } 11084 11085 return true; 11086 }); 11087 }); 11088 } 11089 11090 function dispatch(target, type, detail) { 11091 var e; 11092 var bubbles = true; 11093 11094 if (typeof CustomEvent === "function") { 11095 e = new CustomEvent(type, { 11096 bubbles: bubbles, 11097 detail: detail 11098 }); 11099 } else { 11100 e = document.createEvent("CustomEvent"); 11101 e.initCustomEvent(type, bubbles, false, detail); 11102 } 11103 11104 target.dispatchEvent(e); 11105 return e; 11106 } 11107 11108 function forEachEvent(targets, events, iteratee) { 11109 forEach$1(targets, function (target) { 11110 target && forEach$1(events, function (events2) { 11111 events2.split(" ").forEach(function (eventNS) { 11112 var fragment = eventNS.split("."); 11113 iteratee(target, fragment[0], fragment[1]); 11114 }); 11115 }); 11116 }); 11117 } 11118 11119 function destroy() { 11120 listeners.forEach(function (data) { 11121 data[4](); 11122 }); 11123 empty(listeners); 11124 } 11125 11126 return { 11127 bind: bind, 11128 unbind: unbind, 11129 dispatch: dispatch, 11130 destroy: destroy 11131 }; 11132} 11133var EVENT_MOVE = "move"; 11134var EVENT_MOVED = "moved"; 11135var EVENT_UPDATED = "updated"; 11136var EVENT_DRAG = "drag"; 11137var EVENT_DRAGGED = "dragged"; 11138var EVENT_SCROLL = "scroll"; 11139var EVENT_SCROLLED = "scrolled"; 11140var EVENT_DESTROY = "destroy"; 11141 11142function EventInterface(Splide2) { 11143 var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); 11144 var binder = EventBinder(); 11145 11146 function on(events, callback) { 11147 binder.bind(bus, toArray$1(events).join(" "), function (e) { 11148 callback.apply(callback, isArray$1(e.detail) ? e.detail : []); 11149 }); 11150 } 11151 11152 function emit(event) { 11153 binder.dispatch(bus, event, slice$1(arguments, 1)); 11154 } 11155 11156 if (Splide2) { 11157 Splide2.event.on(EVENT_DESTROY, binder.destroy); 11158 } 11159 11160 return assign$1(binder, { 11161 bus: bus, 11162 on: on, 11163 off: apply$1(binder.unbind, bus), 11164 emit: emit 11165 }); 11166} 11167 11168function RequestInterval(interval, onInterval, onUpdate, limit) { 11169 var now = Date.now; 11170 var startTime; 11171 var rate = 0; 11172 var id; 11173 var paused = true; 11174 var count = 0; 11175 11176 function update() { 11177 if (!paused) { 11178 rate = interval ? min$1((now() - startTime) / interval, 1) : 1; 11179 onUpdate && onUpdate(rate); 11180 11181 if (rate >= 1) { 11182 onInterval(); 11183 startTime = now(); 11184 11185 if (limit && ++count >= limit) { 11186 return pause(); 11187 } 11188 } 11189 11190 raf(update); 11191 } 11192 } 11193 11194 function start(resume) { 11195 !resume && cancel(); 11196 startTime = now() - (resume ? rate * interval : 0); 11197 paused = false; 11198 raf(update); 11199 } 11200 11201 function pause() { 11202 paused = true; 11203 } 11204 11205 function rewind() { 11206 startTime = now(); 11207 rate = 0; 11208 11209 if (onUpdate) { 11210 onUpdate(rate); 11211 } 11212 } 11213 11214 function cancel() { 11215 id && cancelAnimationFrame(id); 11216 rate = 0; 11217 id = 0; 11218 paused = true; 11219 } 11220 11221 function set(time) { 11222 interval = time; 11223 } 11224 11225 function isPaused() { 11226 return paused; 11227 } 11228 11229 return { 11230 start: start, 11231 rewind: rewind, 11232 pause: pause, 11233 cancel: cancel, 11234 set: set, 11235 isPaused: isPaused 11236 }; 11237} 11238 11239function Throttle(func, duration) { 11240 var interval; 11241 11242 function throttled() { 11243 if (!interval) { 11244 interval = RequestInterval(duration || 0, function () { 11245 func(); 11246 interval = null; 11247 }, null, 1); 11248 interval.start(); 11249 } 11250 } 11251 11252 return throttled; 11253} 11254var CLASS_ACTIVE = "is-active"; 11255 11256var SLIDE = "slide"; 11257var FADE = "fade"; 11258 11259function slice(arrayLike, start, end) { 11260 return Array.prototype.slice.call(arrayLike, start, end); 11261} 11262 11263function apply(func) { 11264 return func.bind(null, ...slice(arguments, 1)); 11265} 11266 11267function typeOf(type, subject) { 11268 return typeof subject === type; 11269} 11270function isObject(subject) { 11271 return !isNull(subject) && typeOf("object", subject); 11272} 11273const isArray = Array.isArray; 11274apply(typeOf, "function"); 11275apply(typeOf, "string"); 11276const isUndefined = apply(typeOf, "undefined"); 11277function isNull(subject) { 11278 return subject === null; 11279} 11280 11281function toArray(value) { 11282 return isArray(value) ? value : [value]; 11283} 11284 11285function forEach(values, iteratee) { 11286 toArray(values).forEach(iteratee); 11287} 11288 11289function toggleClass(elm, classes, add) { 11290 if (elm) { 11291 forEach(classes, (name) => { 11292 if (name) { 11293 elm.classList[add ? "add" : "remove"](name); 11294 } 11295 }); 11296 } 11297} 11298 11299const ownKeys = Object.keys; 11300 11301function forOwn(object, iteratee, right) { 11302 if (object) { 11303 let keys = ownKeys(object); 11304 keys = right ? keys.reverse() : keys; 11305 for (let i = 0; i < keys.length; i++) { 11306 const key = keys[i]; 11307 if (key !== "__proto__") { 11308 if (iteratee(object[key], key) === false) { 11309 break; 11310 } 11311 } 11312 } 11313 } 11314 return object; 11315} 11316 11317function assign(object) { 11318 slice(arguments, 1).forEach((source) => { 11319 forOwn(source, (value, key) => { 11320 object[key] = source[key]; 11321 }); 11322 }); 11323 return object; 11324} 11325 11326function removeAttribute(elms, attrs) { 11327 forEach(elms, (elm) => { 11328 forEach(attrs, (attr) => { 11329 elm && elm.removeAttribute(attr); 11330 }); 11331 }); 11332} 11333 11334function setAttribute(elms, attrs, value) { 11335 if (isObject(attrs)) { 11336 forOwn(attrs, (value2, name) => { 11337 setAttribute(elms, name, value2); 11338 }); 11339 } else { 11340 forEach(elms, (elm) => { 11341 isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); 11342 }); 11343 } 11344} 11345 11346const { min, max, floor, ceil, abs } = Math; 11347 11348function clamp(number, x, y) { 11349 const minimum = min(x, y); 11350 const maximum = max(x, y); 11351 return min(max(minimum, number), maximum); 11352} 11353 11354const DEFAULTS = { 11355 speed: 1, 11356 autoStart: true, 11357 pauseOnHover: true, 11358 pauseOnFocus: true 11359}; 11360 11361const I18N = { 11362 startScroll: "Start auto scroll", 11363 pauseScroll: "Pause auto scroll" 11364}; 11365 11366function AutoScroll(Splide2, Components2, options) { 11367 const { on, off, bind, unbind } = EventInterface(Splide2); 11368 const { translate, getPosition, toIndex, getLimit } = Components2.Move; 11369 const { setIndex, getIndex } = Components2.Controller; 11370 const { orient } = Components2.Direction; 11371 const { toggle } = Components2.Elements; 11372 const { Live } = Components2; 11373 const { root } = Splide2; 11374 const throttledUpdateArrows = Throttle(Components2.Arrows.update, 500); 11375 let autoScrollOptions = {}; 11376 let interval; 11377 let stopped; 11378 let hovered; 11379 let focused; 11380 let busy; 11381 let currPosition; 11382 function setup() { 11383 const { autoScroll } = options; 11384 autoScrollOptions = assign({}, DEFAULTS, isObject(autoScroll) ? autoScroll : {}); 11385 } 11386 function mount() { 11387 if (!Splide2.is(FADE)) { 11388 if (!interval && options.autoScroll !== false) { 11389 interval = RequestInterval(0, move); 11390 listen(); 11391 autoStart(); 11392 } 11393 } 11394 } 11395 function destroy() { 11396 if (interval) { 11397 interval.cancel(); 11398 interval = null; 11399 currPosition = void 0; 11400 off([EVENT_MOVE, EVENT_DRAG, EVENT_SCROLL, EVENT_MOVED, EVENT_SCROLLED]); 11401 unbind(root, "mouseenter mouseleave focusin focusout"); 11402 unbind(toggle, "click"); 11403 } 11404 } 11405 function listen() { 11406 if (autoScrollOptions.pauseOnHover) { 11407 bind(root, "mouseenter mouseleave", (e) => { 11408 hovered = e.type === "mouseenter"; 11409 autoToggle(); 11410 }); 11411 } 11412 if (autoScrollOptions.pauseOnFocus) { 11413 bind(root, "focusin focusout", (e) => { 11414 focused = e.type === "focusin"; 11415 autoToggle(); 11416 }); 11417 } 11418 if (autoScrollOptions.useToggleButton) { 11419 bind(toggle, "click", () => { 11420 stopped ? play() : pause(); 11421 }); 11422 } 11423 on(EVENT_UPDATED, update); 11424 on([EVENT_MOVE, EVENT_DRAG, EVENT_SCROLL], () => { 11425 busy = true; 11426 pause(false); 11427 }); 11428 on([EVENT_MOVED, EVENT_DRAGGED, EVENT_SCROLLED], () => { 11429 busy = false; 11430 autoToggle(); 11431 }); 11432 } 11433 function update() { 11434 const { autoScroll } = options; 11435 if (autoScroll !== false) { 11436 autoScrollOptions = assign({}, autoScrollOptions, isObject(autoScroll) ? autoScroll : {}); 11437 mount(); 11438 } else { 11439 destroy(); 11440 } 11441 if (interval && !isUndefined(currPosition)) { 11442 translate(currPosition); 11443 } 11444 } 11445 function autoStart() { 11446 if (autoScrollOptions.autoStart) { 11447 if (document.readyState === "complete") { 11448 play(); 11449 } else { 11450 bind(window, "load", play); 11451 } 11452 } 11453 } 11454 function play() { 11455 if (isPaused()) { 11456 interval.start(true); 11457 Live.disable(true); 11458 focused = hovered = stopped = false; 11459 updateButton(); 11460 } 11461 } 11462 function pause(stop = true) { 11463 if (!stopped) { 11464 stopped = stop; 11465 updateButton(); 11466 if (!isPaused()) { 11467 interval.pause(); 11468 Live.disable(false); 11469 } 11470 } 11471 } 11472 function autoToggle() { 11473 if (!stopped) { 11474 hovered || focused || busy ? pause(false) : play(); 11475 } 11476 } 11477 function move() { 11478 const position = getPosition(); 11479 const destination = computeDestination(position); 11480 if (position !== destination) { 11481 translate(destination); 11482 updateIndex(currPosition = getPosition()); 11483 } else { 11484 pause(false); 11485 if (autoScrollOptions.rewind) { 11486 Splide2.go(autoScrollOptions.speed > 0 ? 0 : Components2.Controller.getEnd()); 11487 } 11488 } 11489 throttledUpdateArrows(); 11490 } 11491 function computeDestination(position) { 11492 const speed = autoScrollOptions.speed || 1; 11493 position += orient(speed); 11494 if (Splide2.is(SLIDE)) { 11495 position = clamp(position, getLimit(false), getLimit(true)); 11496 } 11497 return position; 11498 } 11499 function updateIndex(position) { 11500 const { length } = Splide2; 11501 const index = (toIndex(position) + length) % length; 11502 if (index !== getIndex()) { 11503 setIndex(index); 11504 Components2.Slides.update(); 11505 Components2.Pagination.update(); 11506 options.lazyLoad === "nearby" && Components2.LazyLoad.check(); 11507 } 11508 } 11509 function updateButton() { 11510 if (toggle) { 11511 const key = stopped ? "startScroll" : "pauseScroll"; 11512 toggleClass(toggle, CLASS_ACTIVE, !stopped); 11513 setAttribute(toggle, "aria-label", options.i18n[key] || I18N[key]); 11514 } 11515 } 11516 function isPaused() { 11517 return !interval || interval.isPaused(); 11518 } 11519 return { 11520 setup, 11521 mount, 11522 destroy, 11523 play, 11524 pause, 11525 isPaused 11526 }; 11527} 11528 11529 11530 11531//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tYXV0by1zY3JvbGwvZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsLmVzbS5qcz9mMzE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtB
11531QUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsT0FBTyw2QkFBNkI7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyw0Q0FBNEM7QUFDckQsU0FBUyxxQkFBcUI7QUFDOUIsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsU0FBUztBQUNsQixTQUFTLE9BQU87QUFDaEIsU0FBUyxPQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixpQ0FBaUMsa0RBQWtEO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QjtBQUNBLG1DQUFtQywyREFBMkQ7QUFDOUY7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFc0IiLCJmaWxlIjoiMjI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAc3BsaWRlanMvc3BsaWRlLWV4dGVuc2lvbi1hdXRvLXNjcm9sbFxuICogVmVyc2lvbiAgOiAwLjUuM1xuICogTGljZW5zZSAgOiBNSVRcbiAqIENvcHlyaWdodDogMjAyMiBOYW90b3NoaSBGdWppdGFcbiAqL1xuZnVuY3Rpb24gZW1wdHkoYXJyYXkpIHtcbiAgYXJyYXkubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2xpY2UkMShhcnJheUxpa2UsIHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycmF5TGlrZSwgc3RhcnQsIGVuZCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5JDEoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kLmFwcGx5KGZ1bmMsIFtudWxsXS5jb25jYXQoc2xpY2UkMShhcmd1bWVudHMsIDEpKSk7XG59XG5cbmZ1bmN0aW9uIHJhZihmdW5jKSB7XG4gIHJldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuYyk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZiQxKHR5cGUsIHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSB0eXBlO1xufVxuXG52YXIgaXNBcnJheSQxID0gQXJyYXkuaXNBcnJheTtcbmFwcGx5JDEodHlwZU9mJDEsIFwiZnVuY3Rpb25cIik7XG5hcHBseSQxKHR5cGVPZiQxLCBcInN0cmluZ1wiKTtcbmFwcGx5JDEodHlwZU9mJDEsIFwidW5kZWZpbmVkXCIpO1xuXG5mdW5jdGlvbiB0b0FycmF5JDEodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkkMSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2gkMSh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkkMSh2YWx1ZXMpLmZvckVhY2goaXRlcmF0ZWUpO1xufVxuXG52YXIgb3duS2V5cyQxID0gT2JqZWN0LmtleXM7XG5cbmZ1bmN0aW9uIGZvck93biQxKG9iamVjdCwgaXRlcmF0ZWUsIHJpZ2h0KSB7XG4gIGlmIChvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IG93bktleXMkMShvYmplY3QpO1xuICAgIGtleXMgPSByaWdodCA/IGtleXMucmV2ZXJzZSgpIDoga2V5cztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09IFwiX19wcm90b19fXCIpIHtcbiAgICAgICAgaWYgKGl0ZXJhdGVlKG9iamVjdFtrZXldLCBrZXkpID09PSBmYWxzZSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduJDEob2JqZWN0KSB7XG4gIHNsaWNlJDEoYXJndW1lbnRzLCAxKS5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICBmb3JPd24kMShzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxudmFyIG1pbiQxID0gTWF0aC5taW47XG5cbmZ1bmN0aW9uIEV2ZW50QmluZGVyKCkge1xuICB2YXIgbGlzdGVuZXJzID0gW107XG5cbiAgZnVuY3Rpb24gYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrLCBvcHRpb25zKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgdmFyIGlzRXZlbnRUYXJnZXQgPSAoXCJhZGRFdmVudExpc3RlbmVyXCIgaW4gdGFyZ2V0KTtcbiAgICAgIHZhciByZW1vdmVyID0gaXNFdmVudFRhcmdldCA/IHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGFyZ2V0LCBldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wicmVtb3ZlTGlzdGVuZXJcIl0uYmluZCh0YXJnZXQsIGNhbGxiYWNrKTtcbiAgICAgIGlzRXZlbnRUYXJnZXQgPyB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIG9wdGlvbnMpIDogdGFyZ2V0W1wiYWRkTGlzdGVuZXJcIl0oY2FsbGJhY2spO1xuICAgICAgbGlzdGVuZXJzLnB1c2goW3RhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSwgY2FsbGJhY2ssIHJlbW92ZXJdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVuYmluZCh0YXJnZXRzLCBldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRhcmdldHMsIGV2ZW50cywgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIG5hbWVzcGFjZSkge1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyWzBdID09PSB0YXJnZXQgJiYgbGlzdGVuZXJbMV0gPT09IGV2ZW50ICYmIGxpc3RlbmVyWzJdID09PSBuYW1lc3BhY2UgJiYgKCFjYWxsYmFjayB8fCBsaXN0ZW5lclszXSA9PT0gY2FsbGJhY2spKSB7XG4gICAgICAgICAgbGlzdGVuZXJbNF0oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgI
11531H1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcGF0Y2godGFyZ2V0LCB0eXBlLCBkZXRhaWwpIHtcbiAgICB2YXIgZTtcbiAgICB2YXIgYnViYmxlcyA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIEN1c3RvbUV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGUgPSBuZXcgQ3VzdG9tRXZlbnQodHlwZSwge1xuICAgICAgICBidWJibGVzOiBidWJibGVzLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO1xuICAgICAgZS5pbml0Q3VzdG9tRXZlbnQodHlwZSwgYnViYmxlcywgZmFsc2UsIGRldGFpbCk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZSk7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBpdGVyYXRlZSkge1xuICAgIGZvckVhY2gkMSh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaCQxKGV2ZW50cywgZnVuY3Rpb24gKGV2ZW50czIpIHtcbiAgICAgICAgZXZlbnRzMi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROUykge1xuICAgICAgICAgIHZhciBmcmFnbWVudCA9IGV2ZW50TlMuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgIGl0ZXJhdGVlKHRhcmdldCwgZnJhZ21lbnRbMF0sIGZyYWdtZW50WzFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIGRhdGFbNF0oKTtcbiAgICB9KTtcbiAgICBlbXB0eShsaXN0ZW5lcnMpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaW5kOiBiaW5kLFxuICAgIHVuYmluZDogdW5iaW5kLFxuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH07XG59XG52YXIgRVZFTlRfTU9WRSA9IFwibW92ZVwiO1xudmFyIEVWRU5UX01PVkVEID0gXCJtb3ZlZFwiO1xudmFyIEVWRU5UX1VQREFURUQgPSBcInVwZGF0ZWRcIjtcbnZhciBFVkVOVF9EUkFHID0gXCJkcmFnXCI7XG52YXIgRVZFTlRfRFJBR0dFRCA9IFwiZHJhZ2dlZFwiO1xudmFyIEVWRU5UX1NDUk9MTCA9IFwic2Nyb2xsXCI7XG52YXIgRVZFTlRfU0NST0xMRUQgPSBcInNjcm9sbGVkXCI7XG52YXIgRVZFTlRfREVTVFJPWSA9IFwiZGVzdHJveVwiO1xuXG5mdW5jdGlvbiBFdmVudEludGVyZmFjZShTcGxpZGUyKSB7XG4gIHZhciBidXMgPSBTcGxpZGUyID8gU3BsaWRlMi5ldmVudC5idXMgOiBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHZhciBiaW5kZXIgPSBFdmVudEJpbmRlcigpO1xuXG4gIGZ1bmN0aW9uIG9uKGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICBiaW5kZXIuYmluZChidXMsIHRvQXJyYXkkMShldmVudHMpLmpvaW4oXCIgXCIpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgY2FsbGJhY2suYXBwbHkoY2FsbGJhY2ssIGlzQXJyYXkkMShlLmRldGFpbCkgPyBlLmRldGFpbCA6IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXQoZXZlbnQpIHtcbiAgICBiaW5kZXIuZGlzcGF0Y2goYnVzLCBldmVudCwgc2xpY2UkMShhcmd1bWVudHMsIDEpKTtcbiAgfVxuXG4gIGlmIChTcGxpZGUyKSB7XG4gICAgU3BsaWRlMi5ldmVudC5vbihFVkVOVF9ERVNUUk9ZLCBiaW5kZXIuZGVzdHJveSk7XG4gIH1cblxuICByZXR1cm4gYXNzaWduJDEoYmluZGVyLCB7XG4gICAgYnVzOiBidXMsXG4gICAgb246IG9uLFxuICAgIG9mZjogYXBwbHkkMShiaW5kZXIudW5iaW5kLCBidXMpLFxuICAgIGVtaXQ6IGVtaXRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIFJlcXVlc3RJbnRlcnZhbChpbnRlcnZhbCwgb25JbnRlcnZhbCwgb25VcGRhdGUsIGxpbWl0KSB7XG4gIHZhciBub3cgPSBEYXRlLm5vdztcbiAgdmFyIHN0YXJ0VGltZTtcbiAgdmFyIHJhdGUgPSAwO1xuICB2YXIgaWQ7XG4gIHZhciBwYXVzZWQgPSB0cnVlO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXBhdXNlZCkge1xuICAgICAgcmF0ZSA9IGludGVydmFsID8gbWluJDEoKG5vdygpIC0gc3RhcnRUaW1lKSAvIGludGVydmFsLCAxKSA6IDE7XG4gICAgICBvblVwZGF0ZSAmJiBvblVwZGF0ZShyYXRlKTtcblxuICAgICAgaWYgKHJhdGUgPj0gMSkge1xuICAgICAgICBvbkludGVydmFsKCk7XG4gICAgICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuXG4gICAgICAgIGlmIChsaW1pdCAmJiArK2NvdW50ID49IGxpbWl0KSB7XG4gICAgICAgICAgcmV0dXJuIHBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmFmKHVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQocmVzdW1lKSB7XG4gICAgIXJlc3VtZSAmJiBjYW5jZWwoKTtcbiAgICBzdGFydFRpbWUgPSBub3coKSAtIChyZXN1bWUgPyByYXRlICogaW50ZXJ2YWwgOiAwKTtcbiAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICByYWYodXBkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiByZXdpbmQoKSB7XG4gICAgc3RhcnRUaW1lID0gbm93KCk7XG4gICAgcmF0ZSA9IDA7XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIG9uVXBkYXRlKHJhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBpZCAmJiBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgcmF0ZSA9IDA7XG4gICAgaWQgPSAwO1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBzZXQodGltZSkge1xuICAgIGludGVydmFsID0gdGltZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF1c2VkKCkge1xuICAgIHJldHVybiBwYXVzZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICByZXdpbmQ6IHJld2luZCxcbiAgICBwYXVzZTogcGF1c2UsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgc2V0OiBzZXQsXG4gICAgaXNQYXVzZWQ6IGlzUGF1c2VkXG4gIH07XG59XG5cbmZ1bmN0aW9uIFRocm90dGxlKGZ1bmMsIGR1cmF0aW9uKSB7XG4gIHZhciBpbnRlcnZhbDtcblxuICBmdW5jdGlvbiB0aHJvdHRsZWQoKSB7XG4gICAgaWYgKCFpbnRlcnZhbCkge1xuICAgICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoZHVyYXRpb24gfHwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jKCk7XG4gICAgICAgIGludGVydmFsID0gbnVsbDtcbiAgICAgIH0sIG51bGwsIDEpO1xuICAgICAgaW50ZXJ2YWwuc3RhcnQoKTtcbiAgICB9XG4gI
11531H1cblxuICByZXR1cm4gdGhyb3R0bGVkO1xufVxudmFyIENMQVNTX0FDVElWRSA9IFwiaXMtYWN0aXZlXCI7XG5cbnZhciBTTElERSA9IFwic2xpZGVcIjtcbnZhciBGQURFID0gXCJmYWRlXCI7XG5cbmZ1bmN0aW9uIHNsaWNlKGFycmF5TGlrZSwgc3RhcnQsIGVuZCkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyYXlMaWtlLCBzdGFydCwgZW5kKTtcbn1cblxuZnVuY3Rpb24gYXBwbHkoZnVuYykge1xuICByZXR1cm4gZnVuYy5iaW5kKG51bGwsIC4uLnNsaWNlKGFyZ3VtZW50cywgMSkpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5mdW5jdGlvbiBpc09iamVjdChzdWJqZWN0KSB7XG4gIHJldHVybiAhaXNOdWxsKHN1YmplY3QpICYmIHR5cGVPZihcIm9iamVjdFwiLCBzdWJqZWN0KTtcbn1cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuYXBwbHkodHlwZU9mLCBcImZ1bmN0aW9uXCIpO1xuYXBwbHkodHlwZU9mLCBcInN0cmluZ1wiKTtcbmNvbnN0IGlzVW5kZWZpbmVkID0gYXBwbHkodHlwZU9mLCBcInVuZGVmaW5lZFwiKTtcbmZ1bmN0aW9uIGlzTnVsbChzdWJqZWN0KSB7XG4gIHJldHVybiBzdWJqZWN0ID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gIHRvQXJyYXkodmFsdWVzKS5mb3JFYWNoKGl0ZXJhdGVlKTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxtLCBjbGFzc2VzLCBhZGQpIHtcbiAgaWYgKGVsbSkge1xuICAgIGZvckVhY2goY2xhc3NlcywgKG5hbWUpID0+IHtcbiAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgIGVsbS5jbGFzc0xpc3RbYWRkID8gXCJhZGRcIiA6IFwicmVtb3ZlXCJdKG5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IG93bktleXMgPSBPYmplY3Qua2V5cztcblxuZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUsIHJpZ2h0KSB7XG4gIGlmIChvYmplY3QpIHtcbiAgICBsZXQga2V5cyA9IG93bktleXMob2JqZWN0KTtcbiAgICBrZXlzID0gcmlnaHQgPyBrZXlzLnJldmVyc2UoKSA6IGtleXM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYgKGtleSAhPT0gXCJfX3Byb3RvX19cIikge1xuICAgICAgICBpZiAoaXRlcmF0ZWUob2JqZWN0W2tleV0sIGtleSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYXNzaWduKG9iamVjdCkge1xuICBzbGljZShhcmd1bWVudHMsIDEpLmZvckVhY2goKHNvdXJjZSkgPT4ge1xuICAgIGZvck93bihzb3VyY2UsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKGVsbXMsIGF0dHJzKSB7XG4gIGZvckVhY2goZWxtcywgKGVsbSkgPT4ge1xuICAgIGZvckVhY2goYXR0cnMsIChhdHRyKSA9PiB7XG4gICAgICBlbG0gJiYgZWxtLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShlbG1zLCBhdHRycywgdmFsdWUpIHtcbiAgaWYgKGlzT2JqZWN0KGF0dHJzKSkge1xuICAgIGZvck93bihhdHRycywgKHZhbHVlMiwgbmFtZSkgPT4ge1xuICAgICAgc2V0QXR0cmlidXRlKGVsbXMsIG5hbWUsIHZhbHVlMik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yRWFjaChlbG1zLCAoZWxtKSA9PiB7XG4gICAgICBpc051bGwodmFsdWUpIHx8IHZhbHVlID09PSBcIlwiID8gcmVtb3ZlQXR0cmlidXRlKGVsbSwgYXR0cnMpIDogZWxtLnNldEF0dHJpYnV0ZShhdHRycywgU3RyaW5nKHZhbHVlKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgeyBtaW4sIG1heCwgZmxvb3IsIGNlaWwsIGFicyB9ID0gTWF0aDtcblxuZnVuY3Rpb24gY2xhbXAobnVtYmVyLCB4LCB5KSB7XG4gIGNvbnN0IG1pbmltdW0gPSBtaW4oeCwgeSk7XG4gIGNvbnN0IG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBtaW4obWF4KG1pbmltdW0sIG51bWJlciksIG1heGltdW0pO1xufVxuXG5jb25zdCBERUZBVUxUUyA9IHtcbiAgc3BlZWQ6IDEsXG4gIGF1dG9TdGFydDogdHJ1ZSxcbiAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICBwYXVzZU9uRm9jdXM6IHRydWVcbn07XG5cbmNvbnN0IEkxOE4gPSB7XG4gIHN0YXJ0U2Nyb2xsOiBcIlN0YXJ0IGF1dG8gc2Nyb2xsXCIsXG4gIHBhdXNlU2Nyb2xsOiBcIlBhdXNlIGF1dG8gc2Nyb2xsXCJcbn07XG5cbmZ1bmN0aW9uIEF1dG9TY3JvbGwoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgY29uc3QgeyBvbiwgb2ZmLCBiaW5kLCB1bmJpbmQgfSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICBjb25zdCB7IHRyYW5zbGF0ZSwgZ2V0UG9zaXRpb24sIHRvSW5kZXgsIGdldExpbWl0IH0gPSBDb21wb25lbnRzMi5Nb3ZlO1xuICBjb25zdCB7IHNldEluZGV4LCBnZXRJbmRleCB9ID0gQ29tcG9uZW50czIuQ29udHJvbGxlcjtcbiAgY29uc3QgeyBvcmllbnQgfSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbjtcbiAgY29uc3QgeyB0b2dnbGUgfSA9IENvbXBvbmVudHMyLkVsZW1lbnRzO1xuICBjb25zdCB7IExpdmUgfSA9IENvbXBvbmVudHMyO1xuICBjb25zdCB7IHJvb3QgfSA9IFNwbGlkZTI7XG4gIGNvbnN0IHRocm90dGxlZFVwZGF0ZUFycm93cyA9IFRocm90dGxlKENvbXBvbmVudHMyLkFycm93cy51cGRhdGUsIDUwMCk7XG4gIGxldCBhdXRvU2Nyb2xsT3B0aW9ucyA9IHt9O1xuICBsZXQgaW50ZXJ2YWw7XG4gIGxldCBzdG9wcGVkO1xuICBsZXQgaG92ZXJlZDtcbiAgbGV0IGZvY3VzZWQ7XG4gIGxldCBidXN5O1xuICBsZXQgY3VyclBvc2l0aW9uO1xuICBmdW5jdGlvbiBzZXR1cCgpIHtcbiAgICBjb25zdCB7IGF1dG9TY3JvbGwgfSA9IG9wdGlvbnM7XG4gICAgYXV0b1Njcm9sbE9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRTLCBpc09iamVjdChhdXRvU2Nyb2xsKSA/IGF1dG9TY3JvbGwgOiB7fSk7XG4gIH1cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKCFTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICBpZiAoIWludGVydmFsICYmIG9wdGlvbnMuYXV0b1Njcm9sbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgaW50ZXJ2YWwgPSBSZXF1ZXN0SW50ZXJ2YWwoMCwgbW92ZSk7XG4gICAgICAgIGxpc3RlbigpO1xuICAgICAgICBhdXRvU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9XG4gI
11531H1cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBpZiAoaW50ZXJ2YWwpIHtcbiAgICAgIGludGVydmFsLmNhbmNlbCgpO1xuICAgICAgaW50ZXJ2YWwgPSBudWxsO1xuICAgICAgY3VyclBvc2l0aW9uID0gdm9pZCAwO1xuICAgICAgb2ZmKFtFVkVOVF9NT1ZFLCBFVkVOVF9EUkFHLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF0pO1xuICAgICAgdW5iaW5kKHJvb3QsIFwibW91c2VlbnRlciBtb3VzZWxlYXZlIGZvY3VzaW4gZm9jdXNvdXRcIik7XG4gICAgICB1bmJpbmQodG9nZ2xlLCBcImNsaWNrXCIpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBsaXN0ZW4oKSB7XG4gICAgaWYgKGF1dG9TY3JvbGxPcHRpb25zLnBhdXNlT25Ib3Zlcikge1xuICAgICAgYmluZChyb290LCBcIm1vdXNlZW50ZXIgbW91c2VsZWF2ZVwiLCAoZSkgPT4ge1xuICAgICAgICBob3ZlcmVkID0gZS50eXBlID09PSBcIm1vdXNlZW50ZXJcIjtcbiAgICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5wYXVzZU9uRm9jdXMpIHtcbiAgICAgIGJpbmQocm9vdCwgXCJmb2N1c2luIGZvY3Vzb3V0XCIsIChlKSA9PiB7XG4gICAgICAgIGZvY3VzZWQgPSBlLnR5cGUgPT09IFwiZm9jdXNpblwiO1xuICAgICAgICBhdXRvVG9nZ2xlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGF1dG9TY3JvbGxPcHRpb25zLnVzZVRvZ2dsZUJ1dHRvbikge1xuICAgICAgYmluZCh0b2dnbGUsIFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICBzdG9wcGVkID8gcGxheSgpIDogcGF1c2UoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBvbihFVkVOVF9VUERBVEVELCB1cGRhdGUpO1xuICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9EUkFHLCBFVkVOVF9TQ1JPTExdLCAoKSA9PiB7XG4gICAgICBidXN5ID0gdHJ1ZTtcbiAgICAgIHBhdXNlKGZhbHNlKTtcbiAgICB9KTtcbiAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX0RSQUdHRUQsIEVWRU5UX1NDUk9MTEVEXSwgKCkgPT4ge1xuICAgICAgYnVzeSA9IGZhbHNlO1xuICAgICAgYXV0b1RvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBjb25zdCB7IGF1dG9TY3JvbGwgfSA9IG9wdGlvbnM7XG4gICAgaWYgKGF1dG9TY3JvbGwgIT09IGZhbHNlKSB7XG4gICAgICBhdXRvU2Nyb2xsT3B0aW9ucyA9IGFzc2lnbih7fSwgYXV0b1Njcm9sbE9wdGlvbnMsIGlzT2JqZWN0KGF1dG9TY3JvbGwpID8gYXV0b1Njcm9sbCA6IHt9KTtcbiAgICAgIG1vdW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc3Ryb3koKTtcbiAgICB9XG4gICAgaWYgKGludGVydmFsICYmICFpc1VuZGVmaW5lZChjdXJyUG9zaXRpb24pKSB7XG4gICAgICB0cmFuc2xhdGUoY3VyclBvc2l0aW9uKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXV0b1N0YXJ0KCkge1xuICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5hdXRvU3RhcnQpIHtcbiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgcGxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmluZCh3aW5kb3csIFwibG9hZFwiLCBwbGF5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcGxheSgpIHtcbiAgICBpZiAoaXNQYXVzZWQoKSkge1xuICAgICAgaW50ZXJ2YWwuc3RhcnQodHJ1ZSk7XG4gICAgICBMaXZlLmRpc2FibGUodHJ1ZSk7XG4gICAgICBmb2N1c2VkID0gaG92ZXJlZCA9IHN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHVwZGF0ZUJ1dHRvbigpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwYXVzZShzdG9wID0gdHJ1ZSkge1xuICAgIGlmICghc3RvcHBlZCkge1xuICAgICAgc3RvcHBlZCA9IHN0b3A7XG4gICAgICB1cGRhdGVCdXR0b24oKTtcbiAgICAgIGlmICghaXNQYXVzZWQoKSkge1xuICAgICAgICBpbnRlcnZhbC5wYXVzZSgpO1xuICAgICAgICBMaXZlLmRpc2FibGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdXRvVG9nZ2xlKCkge1xuICAgIGlmICghc3RvcHBlZCkge1xuICAgICAgaG92ZXJlZCB8fCBmb2N1c2VkIHx8IGJ1c3kgPyBwYXVzZShmYWxzZSkgOiBwbGF5KCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1vdmUoKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBnZXRQb3NpdGlvbigpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gY29tcHV0ZURlc3RpbmF0aW9uKHBvc2l0aW9uKTtcbiAgICBpZiAocG9zaXRpb24gIT09IGRlc3RpbmF0aW9uKSB7XG4gICAgICB0cmFuc2xhdGUoZGVzdGluYXRpb24pO1xuICAgICAgdXBkYXRlSW5kZXgoY3VyclBvc2l0aW9uID0gZ2V0UG9zaXRpb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdXNlKGZhbHNlKTtcbiAgICAgIGlmIChhdXRvU2Nyb2xsT3B0aW9ucy5yZXdpbmQpIHtcbiAgICAgICAgU3BsaWRlMi5nbyhhdXRvU2Nyb2xsT3B0aW9ucy5zcGVlZCA+IDAgPyAwIDogQ29tcG9uZW50czIuQ29udHJvbGxlci5nZXRFbmQoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm90dGxlZFVwZGF0ZUFycm93cygpO1xuICB9XG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0aW5hdGlvbihwb3NpdGlvbikge1xuICAgIGNvbnN0IHNwZWVkID0gYXV0b1Njcm9sbE9wdGlvbnMuc3BlZWQgfHwgMTtcbiAgICBwb3NpdGlvbiArPSBvcmllbnQoc3BlZWQpO1xuICAgIGlmIChTcGxpZGUyLmlzKFNMSURFKSkge1xuICAgICAgcG9zaXRpb24gPSBjbGFtcChwb3NpdGlvbiwgZ2V0TGltaXQoZmFsc2UpLCBnZXRMaW1pdCh0cnVlKSk7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVJbmRleChwb3NpdGlvbikge1xuICAgIGNvbnN0IHsgbGVuZ3RoIH0gPSBTcGxpZGUyO1xuICAgIGNvbnN0IGluZGV4ID0gKHRvSW5kZXgocG9zaXRpb24pICsgbGVuZ3RoKSAlIGxlbmd0aDtcbiAgICBpZiAoaW5kZXggIT09IGdldEluZGV4KCkpIHtcbiAgICAgIHNldEluZGV4KGluZGV4KTtcbiAgICAgIENvbXBvbmVudHMyLlNsaWRlcy51cGRhdGUoKTtcbiAgICAgIENvbXBvbmVudHMyLlBhZ2luYX
11531Rpb24udXBkYXRlKCk7XG4gICAgICBvcHRpb25zLmxhenlMb2FkID09PSBcIm5lYXJieVwiICYmIENvbXBvbmVudHMyLkxhenlMb2FkLmNoZWNrKCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUJ1dHRvbigpIHtcbiAgICBpZiAodG9nZ2xlKSB7XG4gICAgICBjb25zdCBrZXkgPSBzdG9wcGVkID8gXCJzdGFydFNjcm9sbFwiIDogXCJwYXVzZVNjcm9sbFwiO1xuICAgICAgdG9nZ2xlQ2xhc3ModG9nZ2xlLCBDTEFTU19BQ1RJVkUsICFzdG9wcGVkKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0b2dnbGUsIFwiYXJpYS1sYWJlbFwiLCBvcHRpb25zLmkxOG5ba2V5XSB8fCBJMThOW2tleV0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBpc1BhdXNlZCgpIHtcbiAgICByZXR1cm4gIWludGVydmFsIHx8IGludGVydmFsLmlzUGF1c2VkKCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzZXR1cCxcbiAgICBtb3VudCxcbiAgICBkZXN0cm95LFxuICAgIHBsYXksXG4gICAgcGF1c2UsXG4gICAgaXNQYXVzZWRcbiAgfTtcbn1cblxuZXhwb3J0IHsgQXV0b1Njcm9sbCB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS1leHRlbnNpb24tYXV0by1zY3JvbGwvZGlzdC9qcy9zcGxpZGUtZXh0ZW5zaW9uLWF1dG8tc2Nyb2xsLmVzbS5qc1xuLy8gbW9kdWxlIGlkID0gMjI3XG4vLyBtb2R1bGUgY2h1bmtzID0gNSJdLCJzb3VyY2VSb290IjoiIn0= 11532//# sourceURL=webpack-internal:///227 11533`)}])})});var Nn=c(Q());var m=class{static{l(this,"Newsletter")}constructor(n,t){this.options=n,this.newsletterNode=document.getElementById(this.options.node),this.newsletterNode&&(this.data=new FormData,this.inputEmail=null,this.init())}init(){this.inputEmail=this.newsletterNode.querySelector('input[name="email"]');let n=this.newsletterNode.querySelector('input[type="checkbox"]'),t=this.newsletterNode.querySelector("button"),e=this.newsletterNode.dataset.msg,I=this.newsletterNode.dataset.check,B=this.newsletterNode.dataset.email;t.addEventListener("click",F=>{let b=this.inputEmail.value.trim(),J=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;if(!b){alert(e);return}if(!J.test(b)){alert(B);return}if(n&&!n.checked){n.classList.toggle(this.options.classFade),alert(I);return}this.data.append("email",b),this.country(),this.name(),this.infoComercial(),this.send(F)})}country(){let n=this.newsletterNode.querySelector('select[name="pais"]');if(n){let e=n.querySelector("option:checked").getAttribute("data-nombre");e!==""&&this.data.append("pais",e)}}name(){let n=this.newsletterNode.querySelector('input[name="nombre"]');if(n){let t=n.value;t!==""&&this.data.append("nombre",t)}}infoComercial(){let n=this.newsletterNode.querySelector('input[name="info_comercial"]');n&&(n.checked?this.data.append("info_comercial",!0):this.data.append("info_comercial",!1))}clearInput(){this.inputEmail.value=""}send(){let n=this.newsletterNode.dataset.url||this.options.urlAdd;fetch(n,{mode:"cors",method:"POST",body:this.data}).then(t=>t.json()).then(t=>{t.error||!t.error&&!t.solicita_cancelar?(alert(t.mensaje),t.error||this.clearInput()):(window.confirm(t.mensaje)||fetch("/newsletter_engine/remove-email/",{method:"POST",mode:"cors",body:this.data}).then(I=>I.json()).then(I=>{alert(I.mensaje)}).catch(I=>{alert(I)}),this.clearInput())}).catch(t=>{alert(t),this.clearInput()})}};new m({node:"newsletter",classFade:"fade-in-to-out",msg:"You must write your email",urlAdd:"/newsletter_engine/add-email/"});var hn=c(a()),Sn=c(s()),En=c(d());var y=document.querySelector(".navbar__hamburguer-btn"),p=document.querySelector(".navbar__close"),W=document.querySelector(".navbar__language"),R="navbar--open";y&&y.addEventListener("click",function(){document.querySelector(".navbar").classList.toggle(R),document.getElementsByTagName("body")[0].style.overflow="hidden"});p&&p.addEventListener("click",function(){document.querySelector(".navbar").classList.remove(R),document.getElementsByTagName("body")[0].style.overflow="visible"});W&&W.addEventListener("click",function(){this.classList.toggle("navbar__language--open")});var i=document.querySelector("#js-navigator"),z="engine-button__link",w=".navbar-caelum__hamburguer-btn",M=".navbar-caelum__close",v=document.querySelector(".engine"),u="navigator--fixed",N="navigator--animate",h="navigator__content--open",S="navigator--open",E="navbar-caelum__body--open",Y="navbar-caelum__hamburguer-ico--open";i&&(C=document.querySelector("body"),r=document.querySelector(".navbar-caelum__content"),V=document.querySelectorAll(".navbar-caelum__hamburguer-ico"),x=i.offsetTop+i.offsetHeight+100,C.classList.contains("bookings")?i.classList.add(u,"navigator--bookcore"):window.onscroll=function(){var g=window.scrollY;g>=x?(i.classList.add(u),setTimeout(function(){i.classList.contains(u)&&i.classList.add(N)},500)):i.classList.contains(u)&&(i.classList.remove(N),i.classList.remove(u),C.classList.remove(E),r.classList.remove(h),i.classList.remove(S),v.classList.remove("navigator__engine--open"),V.forEac
11533h(function(n){n.classList.remove(Y)}))},C.classList.add("navbar-caelum__body"),document.addEventListener("click",function(g){var n=g.target;(n.closest(w)||n.closest(M))&&K(),n.classList.contains(z)&&v.classList.toggle("navigator__engine--open")}));var C,r,V,x;function K(){C.classList.toggle(E),r.classList.toggle(h),r.classList.toggle("navbar-caelum__content--open"),V.forEach(function(g){g.classList.toggle(Y)}),i.classList.toggle(S)}l(K,"close");var Zn=c(Q());var Un=c(a()),mn=c(s()),Vn=c(d());var G=document.querySelector(".popup-antlia"),j=document.querySelector(".popup-antlia__close"),_=["left","right","bottom"];function P(g,n){g==="left"?G.style.left=n:g==="right"?G.style.right=n:g==="bottom"&&(G.style.bottom=n)}l(P,"validate");function X(g){_.forEach(function(n,t){G&&G.classList.contains("popup-antlia--"+n)&&P(n,g)})}l(X,"currentItem");document.addEventListener("DOMContentLoaded",function(){setTimeout(function(){X("0")},2e3);var g=setTimeout(function(){X("-100%")},15e3);function n(){X("-100%"),window.clearTimeout(g)}l(n,"close"),document.addEventListener("click",function(t){t.target===j&&n()}),document.addEventListener("keyup",function(t){t.key==="Escape"&&n()})});var o=class{static{l(this,"Multimedia")}constructor(n){this.options=n,this.body=document.querySelector("body"),this.modal=document.createElement("div"),this.buttons=document.querySelectorAll(this.options.buttonClass),this.close=this.options.closeId||"js-modal-close",this.iframeWidth=this.options.iframeWidth||"100%",this.iframeHeight=this.options.iframeHeight||"500px"}init(){this.buttons&&this.buttons.forEach(n=>{n.addEventListener("click",t=>{this.video=n.dataset.video,this.tour=n.dataset.tour,this.origen=n.dataset.origen,this.openModal()})})}openModal(){let n=null;this.video?!this.origen||parseInt(this.origen)===0?n="https://www.youtube-nocookie.com/embed/"+this.video+"?autoplay=1&playlist="+this.video+"&loop=1&mute=1&rel=0&iv_load_policy=3":n="https://player.vimeo.com/video/"+this.video:this.tour&&(n=this.tour);let t=` 11534 <div class="modal-antlia__dialog"> 11535 <div id="js-modal-close" class="modal-antlia__close"></div> 11536 <iframe id="ytplayer" src="${n}" 11537 style="width: ${this.iframeWidth}; height: ${this.iframeHeight}" 11538 allow="autoplay; encrypted-media" frameborder="0" 11539 referrerpolicy="strict-origin-when-cross-origin" allowfullscreen> 11540 </iframe> 11541 </div>`;this.modal.classList.add("modal-antlia"),this.body.appendChild(this.modal),this.modal.innerHTML=t,setTimeout(()=>{this.modal.classList.add("in")},"100"),this.closeModal(this.modal)}closeModal(n){let t=n.querySelector("#"+this.close),e=n.querySelector("#ytplayer");t.addEventListener("click",function(I){n.classList.remove("in"),e&&setTimeout(()=>{e.remove()},"500")})}};var A=document.body;if(A.classList.contains("empleo")){let g=document.querySelector(".jobs-auriga__button--form"),n=document.querySelector(".jobs-auriga__button--offers"),t=document.querySelector(".dynamic-forms"),e=document.querySelector(".jobs-apus");g.addEventListener("click",()=>{t.classList.add("dynamic-forms--show"),e.classList.remove("jobs-apus--show")}),n.addEventListener("click",()=>{e.classList.add("jobs-apus--show"),t.classList.remove("dynamic-forms--show")}),new o({buttonClass:".video-aquila__link"}).init()}(A.classList.contains("oferta_detalle")||A.classList.contains("hotel_oferta_detalle"))&&document.querySelectorAll(".offers-corona-australis__item").forEach(function(n){let t=n.querySelector(".offers-corona-australis__hotel"),e=n.querySelector(".description-antlia");e.insertBefore(t,e.firstChild)});var q=document.querySelector('[data-toggle="dropdown"]'),$=document.querySelector(".dropdown-menu");q.addEventListener("click",()=>{$.classList.toggle("dropdown-menu--active")});var L=document.querySelector(".navbar__dropdown--nav"),nn=L.querySelector("ul");L.addEventListener("click",()=>{nn.classList.toggle("navbar__list-dropdown--active")});var en=document.querySelector(".navigator__engine");document.addEventListener("click",function(g){g.target.classList.contains("navigator__engine")&&en.classList.remove("navigator__engine--open")});
11541var In=document.querySelector(".js-hamburger"),tn=document.querySelector(".navbar-caelum__hamburguer-btn");In.addEventListener("click",()=>{tn.click()});var gn=document.querySelector(".page404"),ln=document.querySelector(".navigator__logo"),cn=document.querySelector(".navigator__navbar"),Bn=document.getElementById("js-navigator");gn&&(ln.remove(),cn.remove(),Bn.classList.remove("navigator--fixed","navigator--animate"));function bn(){let g=document.querySelector(".introduction-inner__button--more"),n=document.querySelector(".introduction-inner__button--less"),t=document.querySelector(".introduction-inner__paragraph--microsite");if(t&&g){let e=t.clientHeight,I="introduction-inner__paragraph--microsite-active",B="introduction-inner__button--active",F="introduction-inner__button--more-hidden",b="introduction-inner__button--less-show";e>=50&&g.classList.add(B),g.addEventListener("click",function(){n.classList.add(b),g.classList.add(F),t.classList.add(I)}),n.addEventListener("click",function(){n.classList.remove(b),g.classList.remove(F),t.classList.remove(I)})}}l(bn,"introductionParagraph");document.addEventListener("DOMContentLoaded",function(){bn()});})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.